在theano函数中返回np.array或np.matrix对象

时间:2013-03-21 19:56:07

标签: python-2.7 numeric

我必须做这样的事情。

import theano as th
import theano.tensor as T

x, y = T.dscalars('x', 'y')
z = np.matrix([[x*y, x-y], [x/y, x**2/(2*y)]])

f = th.function([x, y], z)   # causes error

# next comes calculations like f(2, 1)*f(3, 2)*some_matrix

我知道最后一行不是有效代码,因为th.function不支持返回这些对象。有没有一种有效的方法可以在不返回矩阵的所有元素并将其作为np.matrix投射的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

您的方法存在的问题是z需要是theano变量列表而不是numpy矩阵。

您可以使用以下方法获得相同的结果:

z1,z2,z3,z4 = x*y,x-y,x/y,x**2/(2*y)
f = th.function([x, y], [z1,z2,z3,z4])

def createz(z1,z2,z3,z4) :
    return np.matrix([[z1,z2],[z3,z4]])

print(createz(*f(1,2)))