2015-09-18 39 views
2

我一直在玩千层面一段时间,现在使用卷积神经网络的二元分类问题。然而,虽然我得到了良好(ish)的训练和验证损失结果,但我的验证和测试精度始终保持不变(网络始终预测同一类别)。用千层面卷积神经网络的准确性(回归与分类)

我碰到过this,这个人和我一样有烤宽面条的问题。他们的解决方案是设置regression=True,因为他们在烤宽面条上使用Nolearn。

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

+0

为什么你不想使用nolearn有一个特别的原因吗? –

+0

没有特别的原因,除了它似乎增加了另一层顶端的千层面,林不知道是必要的。你认为它增加了更多功能吗?另外我觉得好像调试起来可能会更困难? – mjacuse

+0

IMO nolearn添加了很好的功能,如BatchIterator,我用它进行大量预处理(随机裁剪数据等)。自从我开始使用nolearn后,我还没有发现更难调试。但这是个人观点。 –

回答

0

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

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

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

这只是一个猜测,很难说没有看到代码和数据集。