Theano打印测试集样本的概率

时间:2013-12-06 04:16:58

标签: generics printing types probability theano

在DL教程中

我试图根据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()  

1 个答案:

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