如何在Theano中将多个输出变量组合在一起?
我正在尝试在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.])