作为初学者,我试图使用theano简单地计算两个矩阵的点积。
我的代码非常简单。
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]]))
但问题是每次运行此代码时,都会收到类似“TypeError:Unknown parameter type:”的错误消息。
有谁能告诉我我的代码有什么问题?
答案 0 :(得分:2)
你不能将numpy数组传递给theano函数,theano functions只能由theano.tensor
变量定义。因此,您始终可以使用张量/符号变量的交互来定义计算,并且可以对可以使用函数的值/实际数据执行实际计算,使用numpy数组定义theano函数本身是没有意义的。
这应该有效:
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))