论文代码中经常会用到torch.einsum(),其本质是对相同下标求和
举例

torch.einsum('nctv, vtq -> ncqv', (x,y))

’ -> '左边是两个或多个元素原本的维度下标,右边是要得到的维度下标
理解这个公式最好的办法就是将其展开
这个例子是论文中的真实开源代码,求和的两边一个有四个维度,一个三个维度,最终得到四个维度的结果。

  • 使用zeros先创建结果维度的矩阵
  • 按照结果的维度按照外层循环展开,如最终结果有4个维度就创建4层循环
  • 内层循环即维度中消失的下标,在例子中消失的是t,即对t进行循环,在这之前创建temp准备记录求和结果
  • 内层循环求和,记录结果,将值赋给最终结果
import torch
x = torch.randn(32,3,10,22) # shape: n,c,t,v
y = torch.randn(22,10,10) # shape: v,t,q
res_1 = torch.einsum('nctv, vtq -> ncqv', (x,y))
print('einsum求和结果:')
print(res_1[1,1,1]) #维度太高写不下,就取最后一个维度看一看
print('-'*40)res_2 = torch.zeros(32,3,10,22) #先将res_2维度设定为n,c,q,v
for n in range(32): #按照n,c,q,v展开外层循环for c in range(3):for q in range(10):for v in range(22):temp = 0 #准备记录求和结果for t in range(10): #内层循环,这个是消失的下标temp += x[n,c,t,v] * y[v,t,q]res_2[n,c,q,v] = temp
print('for循环求和结果:')
print(res_2[1,1,1])

最后结果:

完全一致
所以当你看不懂论文中的爱因斯坦求和式子时,不妨用for循环将其展开来理解试试

参考:
https://blog.csdn.net/ashome123/article/details/117110042

对于论文中Pytorch代码爱因斯坦求和einsum的理解相关推荐

  1. python 笔记:爱因斯坦求和 einsum

    1 einsum简介 使用爱因斯坦求和约定,可以以简单的方式表示许多常见的多维线性代数数组运算. 给定两个矩阵A和B,我们想对它们做一些操作,比如 multiply.sum或者transpose等.虽 ...

  2. 爱因斯坦求和约定 含代码einsum

    目录 一.简介 1.哑标 2.自由标 二.torch实现 1.计算迹 2.取矩阵对角线 3.计算外积 4.batch矩阵乘法 5.带有子列表和省略号 6.变换维度 7.双线性变换,类似于torch.n ...

  3. einsum爱因斯坦求和(numpy)

    0. 爱因斯坦求和约定(Einstein Notation) 在数学中,爱因斯坦求和约定是一种标记法,也称为Einstein Summation Convention,在处理关于坐标的方程式时十分有效 ...

  4. tf.einsum—爱因斯坦求和约定

    1. einsum记法 如果你像我一样,发现记住PyTorch/TensorFlow中那些计算点积.外积.转置.矩阵-向量乘法.矩阵-矩阵乘法的函数名字和签名很费劲,那么einsum记法就是我们的救星 ...

  5. 【深度学习】爱因斯坦求和约定(einsum)

    import tensorflow as tf print(tf.__version__) 2.0.0 一.爱因斯坦求和约定(einsum)的介绍 爱因斯坦求和约定是一种对复杂张量运算的优雅表达方式. ...

  6. np.einsum(爱因斯坦求和约定)

    欢迎关注我的微信公号:小张Python einsum 全称 Einstein summation convention(爱因斯坦求和约定),用简单的方式来代表多维数组运算: 矩阵求各元素之和 A=∑i ...

  7. einsum方法详解(爱因斯坦求和)

    einsum方法详解(爱因斯坦求和) einsum是pytorch.numpy中一个十分优雅的方法,如果利用得当,可完全代替所有其他的矩阵计算方法,不过这需要一定的学习成本.本文旨在详细解读einsu ...

  8. TensorRT - 喜大普奔,TensorRT8.2 EA起开始支持Einsum爱因斯坦求和算子

    1 TensorRT 8.2 EA版本支持爱因斯坦求和算子Einsum NVIDIA在2021年10月6日发布的TensorRT新版本 8.2 Early Access版本终于开始支持爱因斯坦求和算子 ...

  9. 一文掌握爱因斯坦求和约定 einsum

    爱因斯坦跟 NumPy 有关系吗?没有,但他提出了一个针对数学公式的符号简化办法,即爱因斯坦求和约定(Einstein Summation Convention)或者叫爱因斯坦标记法(Einstein ...

最新文章

  1. wpf异形按钮,定制异型按钮在WPF
  2. “中文四六级”考试来了!《国际中文教育中文水平等级标准》发布
  3. erp二次开发有出路吗_ERP的真正技术瓶颈:详细生产排程!
  4. 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。...
  5. OpenCv:椭圆上点的计算方程
  6. 三点估算pmp_我本人是做项目经理的,我把考PMP也当成一个项目来规划
  7. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(配置数据库监听_09)
  8. 老男孩shell实战读书笔记 (6-10章节)
  9. Kotlin 接口(三)
  10. 在苹果 Mac上接收和暂停或停止接收通知操作方法?
  11. 如何打造高可伸缩的移动电商架构?
  12. 【aRsenal-1】用R创建Word和PowerPoint文档
  13. Mac系统可用的甘特图软件分享
  14. Windows(多)操作系统启动过程
  15. 信息终端安全是指办公和生产用计算机,从办公终端安全角度考虑,以下哪个是正确的()...
  16. backtrack渗透测试中常用的命令总结
  17. SHINE OPENCART 自适应 多用途主题模板 ABC-0021
  18. 非常实用的,国内十大另类行业网址导航站
  19. Sony 入股 Epic,新世代游戏巨头分道扬镳的开始
  20. Redis BitMap结构实现签到、连续签到统计

热门文章

  1. 【计算机网络实验】Wireshark 抓包http、smtp;Telnet访问邮箱
  2. pdf转换成excel转换器破解版下载
  3. 智能CAN总线隔离中继器详细的规格参数
  4. Android 实现仿探探 左右滑动效果
  5. 【Appium】如何配置真机连接及定位元素
  6. 应用FastDeploy小感
  7. Android 系统源码代码情景分析
  8. 磁珠滤波对比电感滤波的对比
  9. 新手必备 零基础打造 全屏海报!让你的店铺更加专业
  10. 【新大陆物联网竞赛】mysql5.7连接navicat