我一直在玩Lasagne一段时间用于使用卷积神经网络的二元分类问题。但是,虽然我得到了培训和验证丢失的结果(ish),但我的验证和测试准确性始终是恒定的(网络始终预测同一类)。
我遇到了this,与我一起遇到过与Lasagne相同问题的人。他们的解决方案是设置regression=True
,因为他们在烤宽面条上使用Nolearn。
有没有人知道如何在Lasagne中设置相同的变量(因为我不想使用Nolearn)?除此之外,有没有人解释为什么需要这样做?
答案 0 :(得分:0)
从nolearn看the code of the NeuralNet class,看起来参数regression
在各个地方使用,但大多数时候它会影响输出值和损失的计算方式。
如果是regression=False
(默认值),网络将输出具有最大概率的类,并使用分类交叉熵计算损失。
另一方面,在regression=True
的情况下,网络输出每个类的概率,并用输出向量上的平方误差计算损失。
我不是深度学习和CNN的专家,但这可能有效的原因是,在regression=True
的情况下,如果有一个小的误差梯度,对网络参数应用微小的变化可能不会改变预测的类和相关的损失,并可能导致算法“认为”它已经收敛。但是,如果你看一下类概率,小的参数变化会影响概率和结果均方误差,网络将继续沿着这条路走下去,最终可能改变预测。
这只是猜测,如果没有看到代码和数据集,很难说清楚。