我已经用Lasagne玩了一段时间了,用卷积神经网络解决了一个二进制分类问题。然而,尽管我在训练和验证损失方面得到了for (Ish)结果,但我的验证和测试精度始终是恒定的(网络总是预测同一个类)。
我遇到过this,他和我在吃千层面时遇到了同样的问题。他们的解决方案是设置regression=True,因为他们正在使用Nolearn在千层面之上。
有谁知道如何在Lasagne中设置相同的变量(因为我不想使用Nolearn)?此外,有没有人可以解释为什么需要发生这种情况?
发布于 2015-09-28 19:48:29
从nolearn看一下the code of the NeuralNet class,看起来参数regression在不同的地方使用,但大多数情况下它会影响如何计算输出值和损失。
在regression=False (默认值)的情况下,网络输出具有最大概率的类,并使用分类交叉点来计算损失。另一方面,在regression=True的情况下,网络输出每个类别的概率,并用输出向量上的平方误差计算损失。
我不是深度学习和有线电视新闻网的专家,但这可能起作用的原因是,在regression=True的情况下,如果有一个小的误差梯度,对网络参数应用小的更改可能不会改变预测的类别和相关的损失,并可能导致算法“认为”它已经收敛。但如果你看的是类别概率,小的参数变化将影响概率和由此产生的均方误差,网络将沿着这条路径继续下去,这最终可能会改变预测。
这只是一个猜测,如果不看代码和数据集就很难判断。
https://stackoverflow.com/questions/32654026
复制相似问题