2024-05-12 22:32:41 发布
网友
我已经玩了一段时间宽面条现在是一个使用卷积神经网络的二元分类问题。然而,尽管我在培训和验证损失方面得到了良好(ish)的结果,但我的验证和测试准确性始终是恒定的(网络总是预测同一个类)。在
我遇到过this,一个和我在烤宽面条方面有同样问题的人。他们的解决方案是设置regression=True,因为他们在烤宽面条上使用Nolearn。在
regression=True
有人知道如何在千层面中设置相同的变量吗(因为我不想使用Nolearn)?除此之外,有人能解释为什么要这样做吗?在
从nolearn的the code of the NeuralNet class来看,似乎参数regression在不同的地方使用,但大多数时候它会影响输出值和损耗的计算方式。在
regression
在regression=False(默认值)的情况下,网络以最大概率输出类,并使用类别交叉熵计算损失。 另一方面,在regression=True的情况下,网络输出每个类的概率,并用输出向量的平方误差计算损失。在
regression=False
我不是深度学习和CNN的专家,但这可能起作用的原因是在regression=True的情况下,如果有一个小的误差梯度,对网络参数应用小的变化可能不会改变预测的类和相关的损失,并且可能导致算法“认为”它已经收敛。但是如果你看类概率,小的参数变化会影响概率和产生的均方误差,网络将沿着这条路径继续前进,最终可能会改变预测。在
这只是一个猜测,如果没有看到代码和数据集,很难判断。在
从nolearn的the code of the NeuralNet class来看,似乎参数
regression
在不同的地方使用,但大多数时候它会影响输出值和损耗的计算方式。在在
regression=False
(默认值)的情况下,网络以最大概率输出类,并使用类别交叉熵计算损失。 另一方面,在regression=True
的情况下,网络输出每个类的概率,并用输出向量的平方误差计算损失。在我不是深度学习和CNN的专家,但这可能起作用的原因是在
regression=True
的情况下,如果有一个小的误差梯度,对网络参数应用小的变化可能不会改变预测的类和相关的损失,并且可能导致算法“认为”它已经收敛。但是如果你看类概率,小的参数变化会影响概率和产生的均方误差,网络将沿着这条路径继续前进,最终可能会改变预测。在这只是一个猜测,如果没有看到代码和数据集,很难判断。在
相关问题 更多 >
编程相关推荐