我正在使用tensorflow来训练一个带有22个类的15000个训练图像的一组。我有2个转换层和一个完全连接的层。我已经使用15000个图像训练了网络,并且在训练集上经历了收敛和高精度。
然而,我的测试集的准确度要低得多,所以我假设网络过度拟合。为了解决这个问题,我在网络的完全连接层之前添加了dropout。
但是,添加dropout会导致网络在多次迭代后永远不会收敛。我想知道为什么会这样。我甚至使用了高丢失概率(保持概率为.9)并且经历了相同的结果。
答案 0 :(得分:0)
通过使你的保持辍学概率为0.9,这意味着在每次迭代中神经元连接有10%的几率下降。因此对于辍学也应该有一个最佳值。 / p>
如上所述,您可以通过辍学了解我们也在扩展我们的神经元。上述情况为0.5退出。如果它然后再次出现不同的缩放比例。
所以基本上如果它的0.9丢失保持概率,我们需要将其缩放0.9。这意味着我们在测试中获得了0.1个更大的东西。
通过这个,你可以了解辍学的影响。因此,通过一些概率,它可以使您的节点等饱和,从而导致非收敛问题。
答案 1 :(得分:0)
您可以在卷积层之后将压差添加到密集层,并从卷积层中删除压差。如果您想要更多示例,则可以在每张图片上放置一些白噪声(5%随机像素),并对每张图片使用P,P'变体。这样可以改善您的结果。
答案 2 :(得分:0)
您不应将 0.9 丢掉,否则您在训练阶段就会失去功能。据我所见,大多数辍学学生的学习成绩介于0.2或0.5之间。但是,使用过多的辍学会在训练阶段造成一些问题,并且收敛时间较长,甚至在极少数情况下,也会导致网络学习错误。
您需要谨慎使用dropout,因为您可以看到dropout下面的图像会阻止要素进入下一层,而使用太多dropout或很高的dropout值可能会扼杀学习
DropoutImage