在n个函数中传递numpy数组作为参数

时间:2016-12-01 03:41:49

标签: numpy theano

作为初学者,我试图使用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:”的错误消息。

有谁能告诉我我的代码有什么问题?

1 个答案:

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