2016-12-01 81 views
0

作爲初學者,我試圖簡單地使用theano來計算兩個矩陣的點積。在nano函數中傳遞numpy數組作爲參數

我的代碼很簡單。

import theano 
import theano.tensor as T 
import numpy as np 
from theano import function 

def covarience(array): 

    input_array=T.matrix('input_array') 
    deviation_matrix = T.matrix('deviation_matrix') 
    matrix_filled_with_1s=T.matrix('matrix_filled_with_1s') 
    z = T.dot(input_array, matrix_filled_with_1s) 

    identity=np.ones((len(array),len(array))) 

    f=function([array,identity],z) 
    # print(f) 

covarience(np.array([[2,4],[6,8]])) 

但問題是每個i運行這段代碼時,我得到這樣的錯誤消息「類型錯誤:未知的參數類型:」

誰能告訴我什麼是錯我的代碼?

回答

2

您不能將numpy數組傳遞給theano函數,只能通過theano.tensor變量定義theano functions變量。因此,您可以始終使用張量/符號變量的交互來定義計算,並且可以使用函數對值/真實數據執行實際計算,但使用numpy數組定義函數本身沒有意義。

這應該工作:

import theano 
import theano.tensor as T 
import numpy as np 

a = T.matrix('a') 
b = T.matrix('b') 
z = T.dot(a, b) 
f = theano.function([a, b], z) 
a_d = np.asarray([[2, 4], [6, 8]], dtype=theano.config.floatX) 
b_d = np.ones(a_d.shape, dtype=theano.config.floatX) 
print(f(a_d, b_d))