如何从Theano堆叠自动编码器获取预测矢量

时间:2014-07-11 11:52:36

标签: python theano deep-learning

我正在尝试修改Stacked Autoencoder以便从Theano deep learning tutorial进行分类,第8章。我正在处理的自动编码器代码可用here

我的数据集由4个数组组成:test_set_x,test_set_y,valid_set_x,valid_set_y。这些名字是自我解释的。

这是在验证集上检查训练的自动编码器的方法:

valid_score = the.function([], sda.errors,
                 givens={
                    sda.x: valid_set_x,
                    sda.y: valid_set_y},
                 name='valid_test')

print valid_score()

此代码在我的数据集上打印出“0.87”,因此它可以正常工作。

表达更详细

valid_score = the.function([], T.mean(T.neq(sda.logLayer.y_pred, sda.y)),
                 givens={
                    sda.x: valid_set_x,
                    sda.y: valid_set_y},
                 name='valid_test')

仍然给出87%的正确答案。

但是每当我试图直接得到真正的类预测向量时,我得到一些非常错误的结果:结果向量的所有元素都等于4(我的类中有一个)。

我的尝试看起来像这样:

predict = the.function([], sda.logLayer.y_pred,
                   givens={sda.x: valid_set_x})
print predict()

打印出“[4,4,4,.....,4,4]”。将此结果与valid_set_y向量进行比较可得出约12%的正确性,甚至不到87%。

我不明白我做错了什么。

如果您曾与theano autoencoders和/或上述教程达成协议,请帮助我。

谢谢。

1 个答案:

答案 0 :(得分:2)

valid_score输出是验证集上的错误率。验证分数为87%表示您只能正确分类约12%的验证示例。这个结果似乎与“全4”预测规则一致。