对于论文中Pytorch代码爱因斯坦求和einsum的理解
论文代码中经常会用到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的理解相关推荐
- python 笔记:爱因斯坦求和 einsum
1 einsum简介 使用爱因斯坦求和约定,可以以简单的方式表示许多常见的多维线性代数数组运算. 给定两个矩阵A和B,我们想对它们做一些操作,比如 multiply.sum或者transpose等.虽 ...
- 爱因斯坦求和约定 含代码einsum
目录 一.简介 1.哑标 2.自由标 二.torch实现 1.计算迹 2.取矩阵对角线 3.计算外积 4.batch矩阵乘法 5.带有子列表和省略号 6.变换维度 7.双线性变换,类似于torch.n ...
- einsum爱因斯坦求和(numpy)
0. 爱因斯坦求和约定(Einstein Notation) 在数学中,爱因斯坦求和约定是一种标记法,也称为Einstein Summation Convention,在处理关于坐标的方程式时十分有效 ...
- tf.einsum—爱因斯坦求和约定
1. einsum记法 如果你像我一样,发现记住PyTorch/TensorFlow中那些计算点积.外积.转置.矩阵-向量乘法.矩阵-矩阵乘法的函数名字和签名很费劲,那么einsum记法就是我们的救星 ...
- 【深度学习】爱因斯坦求和约定(einsum)
import tensorflow as tf print(tf.__version__) 2.0.0 一.爱因斯坦求和约定(einsum)的介绍 爱因斯坦求和约定是一种对复杂张量运算的优雅表达方式. ...
- np.einsum(爱因斯坦求和约定)
欢迎关注我的微信公号:小张Python einsum 全称 Einstein summation convention(爱因斯坦求和约定),用简单的方式来代表多维数组运算: 矩阵求各元素之和 A=∑i ...
- einsum方法详解(爱因斯坦求和)
einsum方法详解(爱因斯坦求和) einsum是pytorch.numpy中一个十分优雅的方法,如果利用得当,可完全代替所有其他的矩阵计算方法,不过这需要一定的学习成本.本文旨在详细解读einsu ...
- TensorRT - 喜大普奔,TensorRT8.2 EA起开始支持Einsum爱因斯坦求和算子
1 TensorRT 8.2 EA版本支持爱因斯坦求和算子Einsum NVIDIA在2021年10月6日发布的TensorRT新版本 8.2 Early Access版本终于开始支持爱因斯坦求和算子 ...
- 一文掌握爱因斯坦求和约定 einsum
爱因斯坦跟 NumPy 有关系吗?没有,但他提出了一个针对数学公式的符号简化办法,即爱因斯坦求和约定(Einstein Summation Convention)或者叫爱因斯坦标记法(Einstein ...
最新文章
- wpf异形按钮,定制异型按钮在WPF
- “中文四六级”考试来了!《国际中文教育中文水平等级标准》发布
- erp二次开发有出路吗_ERP的真正技术瓶颈:详细生产排程!
- 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。...
- OpenCv:椭圆上点的计算方程
- 三点估算pmp_我本人是做项目经理的,我把考PMP也当成一个项目来规划
- linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(配置数据库监听_09)
- 老男孩shell实战读书笔记 (6-10章节)
- Kotlin 接口(三)
- 在苹果 Mac上接收和暂停或停止接收通知操作方法?
- 如何打造高可伸缩的移动电商架构?
- 【aRsenal-1】用R创建Word和PowerPoint文档
- Mac系统可用的甘特图软件分享
- Windows(多)操作系统启动过程
- 信息终端安全是指办公和生产用计算机,从办公终端安全角度考虑,以下哪个是正确的()...
- backtrack渗透测试中常用的命令总结
- SHINE OPENCART 自适应 多用途主题模板 ABC-0021
- 非常实用的,国内十大另类行业网址导航站
- Sony 入股 Epic,新世代游戏巨头分道扬镳的开始
- Redis BitMap结构实现签到、连续签到统计