如何在Theano中将多个输出变量组合在一起?

2 投票
2 回答
674 浏览
提问于 2025-04-18 16:05

我正在尝试在Theano中实现一个函数,这个函数的作用是把一个向量转换成另一个向量,但输出向量的每个维度都是我手动指定的。如果我这样创建一个Theano函数:

import theano
import theano.tensor as T
x = T.dvector('x')
dx = 28.0 * (x[1] - x[0])
dy = x[0] * (10.0 - x[1]) - x[2]
dz = x[0] * x[1] - 8.0/3/0 * x[2]
f = theano.function([x],[dx,dy,dz])

那么当我输入 f([1,2,3]) 时,它的输出是 [array(10.0), array(23.0), array(-6.0)],但我希望它返回的是 array([10.0, 23.0, -6.0])。请问在Theano中应该怎么做才能实现这个效果呢?

2 个回答

1

这个函数的输出结果就是一串numpy数组。你可以用 np.array(f([1, 2, 3])) 这个命令把输出的列表转换成一个numpy向量。

3

Kyle Kastner的另一个回答是可行的,但你可以让Theano来帮你处理这个问题(我修正了你例子中的除以0的错误):

import theano
import theano.tensor as T
x = T.dvector('x')
dx = 28.0 * (x[1] - x[0])
dy = x[0] * (10.0 - x[1]) - x[2]
dz = x[0] * x[1] - 8.0/3.0 * x[2]
o = T.as_tensor_variable([dx,dy,dz])
f = theano.function([x],o)
f([1,2,3])
# output array([ 28.,   5.,  -6.])

撰写回答