【问题标题】:How to get predictions vector from Theano stacked autoencoder如何从 Theano 堆叠自动编码器中获取预测向量
【发布时间】:2023-04-07 06:51:01
【问题描述】:

我正在尝试从 Theano deep learning tutorial 第 8 章修改 Stacked Autoencoder 以进行分类。我正在处理的自动编码器的代码在 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 自动编码器和/或上述教程,请帮助我。

谢谢。

【问题讨论】:

  • 你为什么只使用逻辑层?输入应该首先通过 sigmoid 层 - 对吧?然后最终通过逻辑层。

标签: python theano deep-learning


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2017-04-16
    • 2021-12-19
    • 1970-01-01
    • 2023-03-12
    • 2014-10-06
    相关资源
    最近更新 更多