gpt4 book ai didi

python - 在 theano 中定义表达式

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:12 24 4
gpt4 key购买 nike

我有关于 theano 库的问题。假设我有两个矩阵:a_ijb_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

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

关于python - 在 theano 中定义表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com