Python 在theano中定义表达式
我有一个关于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
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
的定义是关键部分。这也可以通过动态形状实现,但这个答案仍在您的框架内。这真的很容易,真让我感到羞耻。谢谢:)