概述
einsum全称Einstein summation convention(爱因斯坦求和约定),又称为爱因斯坦标记法。einsum的写法省去了求和符号,显得更加简洁。
常规 | einsum |
---|---|
c = ∑ i a i b i c=sum_ia_ib_i c=∑iaibi | c = a i b i c=a_ib_i c=aibi |
c j = ∑ j A i j b j c_j=sum_jA_{ij}b_j cj=∑jAijbj | c j = A i j b j c_j=A_{ij}b_j cj=Aijbj |
c k l m n = ∑ i ∑ j a i j k l b i j m n c_{klmn}=sum_isum_ja_{ijkl}b_{ijmn} cklmn=∑i∑jaijklbijmn | a i j k l b i j m n a_{ijkl}b_{ijmn} aijklbijmn |
函数使用
多维张量求和
实现 c j k = ∑ i a i j k c_{jk}=sum_ia_{ijk} cjk=∑iaijk
c = a.sum(axis=0) # 常规
c = np.einsum('ijk->jk', a) # einsum
更高维向量的求和,实现 c ∗ = ∑ i a i ∗ c_{*}=sum_ia_{i*} c∗=∑iai∗,可以直接将剩下的维度替换成省略号。
c = np.einsum('i...->...', a) # einsum
矩阵乘法
实现 c i k = ∑ j a i j b j k c_{ik}=sum_ja_{ij}b_{jk} cik=∑jaijbjk
c = np.dot(a, b) # 常规
c = np.einsum('ij,jk->ik', a, b) # einsum
更高维张量的乘法,实现 c k l = ∑ i ∑ j a i j k b i j l c_{kl}=sum_isum_ja_{ijk}b_{ijl} ckl=∑i∑jaijkbijl
c = np.einsum('ijk,jkl->kl', a, b) # einsum
最后
以上就是顺利篮球为你收集整理的【学习笔记】einsum函数的全部内容,希望文章能够帮你解决【学习笔记】einsum函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复