我试图根据What is the prupose/meaning of passing "input" to a function in Theano?打印测试样本的概率 但我得到以下错误。我需要添加一些theano_flags吗?
如何解决问题?
TypeError:无法将Type Generic(of Variable)转换为 输入TensorType(float64,matrix)。您可以尝试手动转换 到TensorType(float64,矩阵)。
(我的数据的特征数量= 120,类= 2,test_set批量大小= 1)
部分代码是:
来自theano进口pp
classifier = LogisticRegression(input=x, n_in=120, n_out=2)
print " Theano builds graphs for the expressions it computes before evaluating them:that is..."
print pp(classifier.p_y_given_x)
.........................
# test it on the test set
test_losses = [test_model(i)
for i in xrange(n_test_batches)]
test_score = numpy.mean(test_losses)
values=theano.shared(value=test_set_x.get_value)
f=theano.function([],classifier.p_y_given_x,
givens={x:values},on_unused_input='ignore')
print f()
答案 0 :(得分:2)
创建值时代码中存在错误。 test_set_x.get_value是一个python函数。所以它应该是test_set_x.get_value(),因为你想要的是值,而不是返回它的callable。由于theano.shared()接收一个可调用的输入,它创建一个非张量的通用Theano变量。因此,当您尝试使用泛型变量替换x作为张量变量时,会引发错误,因为它不是允许的替换。
但更好的是,您不需要创建新的共享变量,只需编译这样的函数:
f=theano.function([],classifier.p_y_given_x,
givens={x:test_set_x},on_unused_input='ignore')