我是靠谱客的博主 顺利篮球,最近开发中收集的这篇文章主要介绍【学习笔记】einsum函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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=ijaijklbijmn 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=ijaijkbijl

c = np.einsum('ijk,jkl->kl', a, b) # einsum

最后

以上就是顺利篮球为你收集整理的【学习笔记】einsum函数的全部内容,希望文章能够帮你解决【学习笔记】einsum函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部