我刚刚了解了np.einsum,很快就沉迷于它.但似乎theano没有相同的功能所以我需要以某种方式将我的numpy代码转换为theano.如何在theano中编写以下计算?
IX=np.einsum('ijk,lj->ilk',p1,KX)
解决方法:
您只需重新排列轴即可使其工作:
>>> import numpy as np
>>> a = np.random.rand(3, 4, 5)
>>> b = np.random.rand(5, 6)
>>> np.allclose(np.einsum('ikj,jl->ikl', a, b), np.dot(a, b))
所以考虑到这一点:
>>> a = np.random.rand(3, 5, 4)
>>> b = np.random.rand(6, 5)
>>> out_ein = np.einsum('ijk,lj->ilk', a, b)
>>> out_dot = np.transpose(np.dot(np.transpose(a, (0, 2, 1)),
... np.transpose(b, (1, 0))),
... (0, 2, 1))
>>> np.allclose(out_ein, out_dot)
标签:python,numpy,theano
来源: https://codeday.me/bug/20190528/1170458.html