有了这个约定之后,上面表达式可简化成:
有了爱因斯坦约定得到的简写 (注意上面表达式的下标) ,用 einsum('ij,jk->ik',A,B)可以表达矩阵相乘,其中参数
'ij,jk->ik' 是表示在爱因斯坦约定下的矩阵相乘字符串...0, 3, 6],
[1, 4, 7],
[2, 5, 8]])
字符串 "ii->i" 生成矩阵的对角线上的元素,即一维向量,和函数 np.diag(arr2) 等效。...和函数 np.trace(arr2) 等效,求的是矩阵的迹。...上述操作和 np.tensordot( A, B, axes=([0,1],[1,0]) ) 等效。...简约
在注意力机制实现方式中,当考虑 Batch 维度时,公式如下:
用 einsum 函数可以非常简约的实现上面表达式:
from numpy.random import normal
Q =