2013-03-21 56 views
0

我必須這樣做。在theano函數中返回np.array或np.matrix對象

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?

回答

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)))