2

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

我遇到过这个,和我一样的千层面问题。他们的解决方案是regression=True在 Lasagne 上使用 Nolearn 进行设置。

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

4

1 回答 1

0

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

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

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

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

于 2015-09-28T11:48:29.157 回答