带有千层面的卷积神经网络精度(回归与分类)

时间:2015-09-18 14:04:52

标签: python neural-network lasagne nolearn

我一直在玩Lasagne一段时间用于使用卷积神经网络的二元分类问题。但是,虽然我得到了培训和验证丢失的结果(ish),但我的验证和测试准确性始终是恒定的(网络始终预测同一类)。

我遇到了this,与我一起遇到过与Lasagne相同问题的人。他们的解决方案是设置regression=True,因为他们在烤宽面条上使用Nolearn。

有没有人知道如何在Lasagne中设置相同的变量(因为我不想使用Nolearn)?除此之外,有没有人解释为什么需要这样做?

1 个答案:

答案 0 :(得分:0)

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

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

我不是深度学习和CNN的专家,但这可能有效的原因是,在regression=True的情况下,如果有一个小的误差梯度,对网络参数应用微小的变化可能不会改变预测的类和相关的损失,并可能导致算法“认为”它已经收敛。但是,如果你看一下类概率,小的参数变化会影响概率和结果均方误差,网络将继续沿着这条路走下去,最终可能改变预测。

这只是猜测,如果没有看到代码和数据集,很难说清楚。