我的Keras-Tensorflow模型的行为如下图所示。我可以看到训练和验证损失表现不错,但是训练和验证的准确性却很不正常。我认为验证数据集可能比训练集要容易得多。因此,我获得了很高的验证准确性。我期待着您的建议。
问题来源:stackoverflow
从训练中的指标和损失的角度来看,您在此处显示的图看起来很正常。
由于我们正在使用batch_training,通常会看到小的峰值。另外,当您看到那些损耗峰值(损耗增加)时,精度也会降低。
因此,无需担心情节本身。
但是,您对验证准确性的观察确实是明智的:在大多数情况下,发生这种情况是因为验证数据集更容易。
解决此问题的一种方法是使用交叉验证,以查看此现象是否仍然存在。
交叉验证是一种用于模型验证的技术,其中,每次迭代/折叠时,数据集中有一部分保留用于训练和验证。下图总结了我刚刚写的内容。
发生此现象的另一个原因是由于称为Dropout的正则化技术。如您所知,在训练阶段,在某个层上施加的辍学意味着一定百分比的神经元的随机关闭/失活。反过来这会不利于训练集的表现,但是同时降低了过度拟合的风险。因此,很多时候在训练期间使用Dropout时,可能会存在验证准确性更高的情况,因为在验证的预测期间未启用Dropout。
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。