【torch.einsum】

2023-05-16

参考:https://www.cnblogs.com/mengnan/p/10319701.html

爱因斯坦简记法,能简洁表示各种矩阵向量的操作,例如矩阵转置、乘法、求和等等,pytorch中调用API为torch.einsum,第一个参数是字符串,表示对张量的操作,定义不同字符串表示不同操作

例子

矩阵转置

字符串为ij->ji,表示将张量中的元素ij(第i行第j列)变成元素ji

a = torch.tensor([
    [1, 2],
    [2, 3],
    [4, 5],
    [2, 6]
])
b = torch.einsum('ij->ji', a)
print(b)
>>> tensor([[1, 2, 4, 2],
            [2, 3, 5, 6]])
矩阵点乘(哈达玛积)

将矩阵对应位置的元素相乘,字符串ij,ij->ij表示将两个矩阵的ij元素相乘得到元素ij,貌似只能是相乘不能是相加?

a = torch.tensor([
    [1, 2],
    [2, 3],
    [4, 5],
    [2, 6]
])
b = torch.tensor([
    [2, 6],
    [2, 4],
    [3, 1],
    [2, 2]
])
c = torch.einsum('ij,ij->ij', a, b)
print(c)
>>> tensor([[ 2, 12],
	        [ 4, 12],
	        [12,  5],
	        [ 4, 12]])
矩阵乘法

将矩阵 a ∈ R M × N a\in R^{M\times N} aRM×N和矩阵 b ∈ R N × S b\in R^{N\times S} bRN×S相乘得到矩阵 c ∈ R M × S c\in R^{M\times S} cRM×S,字符串ik,kj->ij表示将矩阵a的ik元素和矩阵b的kj元素相乘,k是遍历变量,遍历所有k,累加ik*kj累加得到ij,即矩阵乘法

a = torch.tensor([
    [1, 2, 4],
    [2, 3, 5],
])
b = torch.tensor([
    [2, 6],
    [2, 4],
    [3, 1],
])
c = torch.einsum('ik,kj->ij', a, b)
print(c)
>>> tensor([[18, 18],
        	[25, 29]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【torch.einsum】 的相关文章

  • PyTorch:torch.zeros_like()的用法

    作用 xff1a 产生一个与a相同shape的Tensor 举例 xff1a import torch a 61 torch rand 3 4 产生一个3行4列的0 1的随机Tensor b 61 torch zeros like a 产生
  • PyTorch:torch.max、min、argmax、argmin

    目录 1 torch max 2 torch argmax 3 torch min 4 torch argmin 1 torch max 函数定义 xff1a torch max input dim max 61 None max indi
  • torch.utils.data.dataloader参数collate_fn简析

    torch utils data DataLoader是pytorch提供的数据加载类 xff0c 初始化函数如下 xff0c torch utils data DataLoader dataset batch size 61 1 shuf
  • torch.normal()

    torch normal means std out 61 None 返回一个张量 xff0c 包含从给定参数means std的离散正态分布中抽取随机数 均值means是一个张量 xff0c 包含每个输出元素相关的正态分布的均值 std是
  • Pytorch中torch的操作合集

    tensor的基本操作 PyTorch系例 torch Tensor详解和常用操作 这里最重要的概念是索引出来的结果与原数据共享内存 xff0c 也即修改一个 xff0c 另一个也会跟着修改 tensor的广播机制 Pytorch xff1
  • torch在ubuntu16.04下的搭建(cuda9.0+cudnn7.0)

    希望外婆身体越来越好 参考 xff1a http blog csdn net chenhaifeng2016 article details 68957732 http www 52nlp cn E6 B7 B1 E5 BA A6 E5 A
  • (9)目标检测_SSD的原理

    0主要参考原理来源 1 SSD 论文 代码 pytorch zonechen 博客园 2 python ssd目标检测 目标检测之SSD算法实现 Pytorch weixin 39805734的博客 CSDN博客 3 2 1SSD算法理论
  • 深度学习环境配置2——windows下的torch=1.2.0环境配置

    深度学习环境配置2 windows下的torch 1 2 0环境配置 注意事项 一 2021 9 11更新 二 2021 7 8更新 学习前言 各个版本pytorch的配置教程 环境内容 环境配置 一 Anaconda安装 1 Anacon
  • nn.Sequential和nn.Module区别与选择

    一 nn Sequential torch nn Sequential是一个Sequential容器 模块将按照构造函数中传递的顺序添加到模块中 另外 也可以传入一个有序模块 为了更容易理解 官方给出了一些案例 Sequential使用实例
  • 从一维张量中提取前 k 个值索引

    给定 Torch 中的一维张量 torch Tensor 包含可以比较的值 比如浮点 我们如何提取顶部的索引k该张量中的值 除了暴力方法之外 我还在寻找 Torch lua 提供的一些 API 调用 它可以有效地执行此任务 截至拉取请求 4
  • 当通过命令行发送ctrl-c时,如何在lua中捕获ctrl-c

    我想知道命令行中的用户何时按下 control c 以便我可以保存一些内容 我该怎么做呢 我看过但还没有真正看到任何东西 注意 我对lua有点熟悉 但不是专家 我主要使用 lua 来使用 Torch 库 http torch ch http
  • 使用 TorchText (PyTorch) 进行语言翻译

    我最近开始使用 PyTorch 进行 ML DL 下面的 pytorch 示例解释了我们如何训练一个简单的模型来将德语翻译成英语 https pytorch org tutorials beginner torchtext translat
  • Pytorch 已安装但在 ubuntu 18.04 上无法运行

    我正在尝试在 ubuntu 18 04 上通过 pip 安装 Pytorch 我有 python 3 6 我的笔记本电脑是 HP Pavilion 笔记本 15 安装似乎是正确的 因为我收到消息 成功安装收集的软件包 torch torch
  • tensorflow:reshape()可以创建副本吗?

    在他们的 API v4 中 torch 引入了reshape 更加符合 numpy 的风格 以前 改变火炬张量的形状是通过view 我想知道是否view 现在将被弃用并查看docs https pytorch org docs stable
  • AttributeError:“_MultiProcessingDataLoaderIter”对象没有属性“next”

    我正在尝试使用加载数据集Torch Dataset and DataLoader 但我收到以下错误 AttributeError MultiProcessingDataLoaderIter object has no attribute n
  • torch数据集的结构是怎样的?

    我开始使用 torch 7 我想制作我的数据集进行分类 我已经制作了像素图像和相应的标签 但是 我不知道如何将这些数据提供给火炬 我阅读了其他人的一些代码 发现他们使用的是扩展名为 t7 的数据集 我认为它是张量类型 这样对吗 我想知道如何
  • 具有不同输入的全卷积网络

    我有一个完全卷积神经网络 U Net 可以在下面阅读 https arxiv org pdf 1505 04597 pdf https arxiv org pdf 1505 04597 pdf 我想用它来对图像进行像素分类 我的训练图像有两
  • 在pytorch中使用tensorboard,但得到空白页面?

    我在pytorch 1 3 1中使用tensorboard 并且我在张量板的 pytorch 文档 https pytorch org docs stable tensorboard html 运行后tensorboard logdir r
  • 删除 Torch 张量中的行

    我有一个火炬张量如下 a tensor 0 2215 0 5859 0 4782 0 7411 0 3078 0 3854 0 3981 0 5200 0 1363 0 4060 0 2030 0 4940 0 1640 0 6025 0
  • fbtorch:cmake 找不到 torch 目录

    我正在尝试构建并安装 fbtorch 但是当我使用 cmake 时出现以下错误 CMake Error at CMakeLists txt 9 FIND PACKAGE By not providing FindTorch cmake in

随机推荐

  • Etcd 使用总结

    1 简介 Etcd API 特性 xff1a 原子性 xff1a 一个操作要么全部执行 xff0c 要么全部不执行一致性 xff1a 不论客户端请求的是哪个etcd服务器 xff0c 它都能读取到相同的事件 xff0c 而且这些事件的顺序也
  • 【torch.nn.AdaptiveMaxPool】

    Pytorch提供了自适应池化层torch nn AdaptiveMaxPool xff0c 这种层和一般的池化层一样 xff0c 都没有参数 xff0c 都是对特征进行降采样 xff0c 自适应的意思是在使用池化层时不需要指定核的大小步长
  • 【链表】复杂链表的复制

    题目描述 输入一个复杂链表 xff08 每个节点中有节点值 xff0c 以及两个指针 xff0c 一个指向下一个节点 xff0c 另一个特殊指针random指向一个随机节点 xff09 xff0c 请对此链表进行深拷贝 xff0c 并返回拷
  • 【数组】顺时针打印矩阵

    题目 输入一个矩阵 xff0c 按照从外向里以顺时针的顺序依次打印出每一个数字 xff0c 例如 xff0c 如果输入如下4 X 4矩阵 xff1a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出
  • 【数组】数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半 xff0c 请找出这个数字 例如输入一个长度为9的数组 1 2 3 2 2 2 5 4 2 由于数字2在数组中出现了5次 xff0c 超过数组长度的一半 xff0c 因此输出2 如果不
  • java for循环的几种写法

    参考 xff1a https blog csdn net qq 36804363 article details 87539927 span class token keyword int span span class token pun
  • 【双指针】和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S xff0c 在数组中查找两个数 xff0c 使得他们的和正好是S xff0c 如果有多对数字的和等于S xff0c 输出两个数的乘积最小的 输入 1 2 4 7 11 15 15 返回值 4 1
  • 【动态规划】连续子数组的最大和

    题目描述 输入一个整型数组 xff0c 数组里有正数也有负数 数组中的一个或连续多个整数组成一个子数组 求所有子数组的和的最大值 要求时间复杂度为 O n 输入 xff1a 1 2 3 10 4 7 2 5 返回值 xff1a 18 说明
  • Java交换字符串中两个位置的值

    需求 xff1a 对一字符串abcd xff0c 要求交换位置0和位置2的两个字符 xff0c 交换结果为cbad java高效实现方案 xff0c 先将String转换为char数组 xff0c 数组可以修改任意位置的值 xff0c 进行
  • 【动态规划、递归回溯】字符串的排列

    题目描述 输入一个字符串 按字典序打印出该字符串中字符的所有排列 例如输入字符串abc 则按字典序打印出由字符a b c所能排列出来的所有字符串abc acb bac bca cab和cba 输入一个字符串 长度不超过9 可能有字符重复 字
  • 【数组】把数组排成最小的数

    题目描述 输入一个正整数数组 xff0c 把数组里所有数字拼接起来排成一个数 xff0c 打印能拼接出的所有数字中最小的一个 例如输入数组 3 xff0c 32 xff0c 321 xff0c 则打印出这三个数字能排成的最小数字为32132
  • Docker 容器介绍

    1 简介 1 1 容器和VM 什么是容器 xff1a 一种操作系统级别的虚拟化的方案只能运行相同或相似内核的操作系统依赖Linux内核特性 xff1a Namespace和Cgroups 1 2 依赖内核特性 Namespaces xff1
  • 【数组】数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n 1的范围内 数组中某些数字是重复的 xff0c 但不知道有几个数字是重复的 也不知道每个数字重复几次 请找出数组中第一个重复的数字 例如 xff0c 如果输入长度为7的数组 2 3 1
  • 【数组】构建乘积数组

    题目描述 给定一个数组A 0 1 n 1 请构建一个数组B 0 1 n 1 其中B中的元素B i 61 A 0 A 1 A i 1 A i 43 1 A n 1 不能使用除法 xff08 注意 xff1a 规定B 0 61 A 1 A 2
  • 【二分法】数字在升序数组中出现的次数

    题目描述 统计一个数字在升序数组中出现的次数 示例1 输入 1 2 3 3 3 3 4 5 3 返回值 4 看到数组是有序的 xff0c 并且是查找 xff0c 应该想到用二分法 xff0c 最简单的方法是用二分法找到该数 xff0c 然后
  • 【字符串】第一个只出现一次的字符

    题目描述 在一个字符串 0 lt 61 字符串长度 lt 61 10000 xff0c 全部由字母组成 中找到第一个只出现一次的字符 并返回它的位置 如果没有则返回 1 xff08 需要区分大小写 xff09 xff08 从0开始计数 xf
  • 【字符串】左旋转字符串

    题目描述 汇编语言中有一种移位指令叫做循环左移 xff08 ROL xff09 xff0c 现在有个简单的任务 xff0c 就是用字符串模拟这个指令的运算结果 对于一个给定的字符序列S xff0c 请你把其循环左移K位后的序列输出 例如 x
  • 【字符串】翻转单词顺序列

    题目描述 牛客最近来了一个新员工Fish xff0c 每天早晨总是会拿着一本英文杂志 xff0c 写些句子在本子上 同事Cat对Fish写的内容颇感兴趣 xff0c 有一天他向Fish借来翻看 xff0c 但却读不懂它的意思 例如 xff0
  • 【数组】扑克牌顺子

    题目描述 LL今天心情特别好 因为他去买了一副扑克牌 发现里面居然有2个大王 2个小王 一副牌原本是54张 他随机从中抽出了5张牌 想测测自己的手气 看看能不能抽到顺子 如果抽到的话 他决定去买体育彩票 嘿嘿 xff01 xff01 红心A
  • 【torch.einsum】

    参考 xff1a https www cnblogs com mengnan p 10319701 html 爱因斯坦简记法 xff0c 能简洁表示各种矩阵向量的操作 xff0c 例如矩阵转置 乘法 求和等等 xff0c pytorch中调