Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.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 在theano中定义表达式_Python_Theano - Fatal编程技术网

Python 在theano中定义表达式

Python 在theano中定义表达式,python,theano,Python,Theano,我有一个关于theano图书馆的问题。 假设我有两个矩阵:a_ij和b_ij,它们分别具有[n,m1]和[n,m2]的形状 我想定义一个表达式,它给出形状为[n,m1,m2]的张量c: c_ijk = a_ij * b_ik (请注意,没有求和,因此这不是点积)。 当然,我可以在循环中进行计算,但我想让theano为我计算导数 提前谢谢 Theano张量与numpy数组完全相同。你所要做的就是 import theano import theano.tensor as T import nu

我有一个关于theano图书馆的问题。 假设我有两个矩阵:
a_ij
b_ij
,它们分别具有
[n,m1]
[n,m2]
的形状

我想定义一个表达式,它给出形状为[n,m1,m2]的张量
c

c_ijk = a_ij * b_ik
(请注意,没有求和,因此这不是点积)。 当然,我可以在循环中进行计算,但我想让theano为我计算导数


提前谢谢

Theano张量与numpy数组完全相同。你所要做的就是

import theano
import theano.tensor as T

import numpy as np
rng = np.random.RandomState(42)

n, m1, m2  = 10, 20, 30
A = T.fmatrix()
B = T.fmatrix()

C = A.reshape((n, m1, 1)) * B.reshape((n, 1, m2))

func_C = theano.function([A, B], C)

a = rng.randn(n, m1).astype(np.float32)
b = rng.randn(n, m2).astype(np.float32)

r1 = func_C(a, b)
r2 = np.einsum("ij, ik -> ijk", a, b)
assert np.sqrt(((r1 - r2) ** 2).sum()) < 1e-5
import theano
将无张量导入为T
将numpy作为np导入
rng=np.random.RandomState(42)
n、 m1,m2=10,20,30
A=T.fmatrix()
B=T.fmatrix()
C=A.重塑((n,m1,1))*B.重塑((n,1,m2))
func_C=编号函数([A,B],C)
a=rng.randn(n,m1).aType(np.32)
b=rng.randn(n,m2).aType(np.32)
r1=函数C(a,b)
r2=np.einsum(“ij,ik->ijk”,a,b)
断言np.sqrt((r1-r2)**2.sum())<1e-5

其中
C
的定义是关键部分。这也可以通过动态形状实现,但这个答案仍在您的框架内。

这真的很容易,真让我感到羞耻。谢谢:)