结论:爱因斯坦求和约定就是用来省略求和符号的;所以它的本质是求和运算,它并不能决定具体的运算到底是矩阵乘法,还是内积外积之类的,它所涉及的所谓的矩阵乘法之类的,其实是人为定义的,和它自身无关。
相关定义啥的,可以参考:(2条消息) Pytorch中, torch.einsum详解。_电子科技大学的博客-CSDN博客_torch.einsum
(2条消息) 矩阵操作万能函数 einsum 详细解析(通法教你如何看懂并写出einsum表达式)_iioSnail的博客-CSDN博客_einsum
我们这里讲他的具体运用:
拿矩阵的乘法来举例子
可以看到,这里的torch.einsum('ij,jl -> il',a,b)完全等同于a,b的矩阵乘法a@b
但实际上torch.einsum('ij,jl -> il',a,b)表示的只是,也就是说,这里它为什么会实现矩阵的乘法,实际上是因为你实现已经规定了的运算方式,而他这里只是把求和这一步给省略了;
所以,我们进一步理解爱因斯坦求和公式,它实际上执行了两个步骤:
1:定义矩阵运算中各个元素之间乘积的方式,在这里就是'ij,jl -> il',它规定了,两个矩阵中的元素是按照什么样的方式相乘的,这里就是说要用a的ij坐标的元素,乘以b的jl坐标的元素;
2:求和,'ij,jl -> il'箭头左边比右边多出来的符号就是求和省略掉的符号
再举一个更复杂的例子:
例子来源于:(2条消息) 矩阵操作万能函数 einsum 详细解析(通法教你如何看懂并写出einsum表达式)_iioSnail的博客-CSDN博客_einsum
注意这里所强调的,是元素,是元素,是元素,是指A,B中对应坐标的元素相乘,不是矩阵相乘!!!!!!!!,然后求和