【问题标题】:Convolutional Neural Network accuracy with Lasagne (regression vs classification)Lasagne 的卷积神经网络精度(回归与分类)
【发布时间】:2015-12-15 17:19:00
【问题描述】:

我一直在使用 Lasagne 来解决使用卷积神经网络的二元分类问题。然而,虽然我的训练和验证损失结果还不错,但我的验证和测试准确度始终保持不变(网络总是预测相同的类别)。

我遇到了this,有人和我在烤宽面条上遇到了同样的问题。他们的解决方案是设置regression=True,因为他们在千层面上使用 Nolearn。

有谁知道如何在 Lasagne 中设置相同的变量(因为我不想使用 Nolearn)?除此之外,有没有人解释为什么会发生这种情况?

【问题讨论】:

  • 您不想使用 nolearn 有什么特别的原因吗?
  • 没有特别的原因,除了它似乎只是在千层面上添加了另一层,我不确定这是必要的。你认为它增加了更多功能吗?我也觉得调试起来可能更难?
  • IMO nolearn 添加了不错的功能,例如我经常使用的 BatchIterator 进行预处理(随机裁剪数据等)。自从我开始使用 nolearn 以来,我没有发现调试更难。但这是个人观点。

标签: python neural-network lasagne nolearn


【解决方案1】:

从nolearn看the code of the NeuralNet class,貌似regression这个参数在各个地方都用到了,但大多数时候它会影响输出值和损失的计算方式。

regression=False(默认)的情况下,网络输出具有最大概率的类,并使用分类交叉熵计算损失。 另一方面,在regression=True的情况下,网络输出每个类的概率,并用输出向量的平方误差计算损失。

我不是深度学习和 CNN 方面的专家,但这可能奏效的原因是,在 regression=True 的情况下,如果误差梯度很小,对网络参数应用小的更改可能不会改变预测类和相关的损失,并可能导致算法“认为”它已经收敛。但是,如果您查看类概率,则小的参数变化会影响概率和由此产生的均方误差,并且网络将继续沿着这条路径前进,这最终可能会改变预测。

这只是猜测,不看代码和数据集很难判断。

【讨论】:

    猜你喜欢
    • 2016-07-21
    • 2018-07-14
    • 2018-03-09
    • 2015-04-09
    • 2014-08-24
    • 2017-01-02
    • 2019-01-30
    • 2017-01-01
    • 1970-01-01
    相关资源
    最近更新 更多