![81952ab3129d18f1ba64271ef4f2cbc3.png](https://i-blog.csdnimg.cn/blog_migrate/b210f3041a198d8c04907e9a38852872.jpeg)
说明:讲解时会对相关文章资料进行思想、结构、优缺点,内容进行提炼和记录,相关引用会标明出处,引用之处如有侵权,烦请告知删除。
转载请注明:DengBoCong
这里我们来好好探讨一下深度学习中,矩阵乘法的使用,其实主要是围绕einsum来进行探讨,即通过爱因斯坦求和约定来指导矩阵乘法,同时附带陈列其他矩阵乘法的API,方便进行直观感受。本文中的计算框架及版本如下:
- TensorFlow2.3
- PyTorch1.7.0
- Numpy1.19
爱因斯坦求和约定
我们讨论einsum绕不开爱因斯坦求和约定的,爱因斯坦求和约定(Einstein summation convention)是一种标记的约定,又称为爱因斯坦标记法(Einstein notation),在处理关于坐标的方程式时非常有用,用一句话来总结爱因斯坦求和约定,就是:
当式子中任何一个角标出现了两次,并且一次是上标、一次是下标时,那么该式表示的实际上是对这个角标一切可能值的求和。换言之,如果角标作为上标和下标各出现了一次,那么式子相当于添加了一个关于
的求和符号
我们下面使用线性函数和矩阵运算来对爱因斯坦求和约定进行举例说明:
- 线性函数:从张量中我们知道,一个1-线性函数可以表示为一个向量,这样的向量常被称为余向量、补向量或者1-形式。通常,我们用下标来表示一个余向量的各分量:
,而用上标来表示一个通常的几何向量:
。注意,上标不是乘方,则
和
的内积是:
![equation?tex=%5Csum_%7Bi%3D1%2C2%2C3%7D%5E%7B%7Da_iv%5Ei](https://i-blog.csdnimg.cn/blog_migrate/c5376decd307c461335d98a8cd6c7709.png)
用爱因斯坦求和约定,
![equation?tex=a](https://i-blog.csdnimg.cn/blog_migrate/3a1b450ba33b8215b0d69885896f7309.png)
![equation?tex=v](https://i-blog.csdnimg.cn/blog_migrate/2bd40b4a76c2cad53a0283bfbae48e61.png)
- 矩阵运算:对于矩阵
,我们把其第
行第
列的元素表示为