Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将einsum计算转换为要在序号中使用的点积_Python_Numpy_Theano - Fatal编程技术网

Python 将einsum计算转换为要在序号中使用的点积

Python 将einsum计算转换为要在序号中使用的点积,python,numpy,theano,Python,Numpy,Theano,我最近刚刚学习了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

我最近刚刚学习了
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)

您能否提供具体的输入/输出示例,或者至少提供输入和输出的形状?我想我使用了
numpy.tensordot(p1,KX)
axes
可选参数。不久前,我将
einsum
代码翻译成了
pure
python。代码位于。基本上有两个步骤-解析索引字符串,并创建/运行
nditer
迭代器。