Batch Normalization 和 Dropout 一起导致不正确的分割结果

数据挖掘 机器学习 Python 喀拉斯 批量标准化
2022-03-08 18:45:20

因此,我一直在进行一项测试,以了解许多网络在特定客户数据集上执行道路分割的效果如何。我正在测试 UNET、RDRCNN 和提拉米苏。

UNET 可靠地训练,但是 RDRCNN 和 Tiramisu 不能。在训练期间,验证损失和准确率立即处于平台期。查看结果后,看起来好像网络在猜测单个像素值;导致推论只是所有一种颜色的正方形。

我尝试降低学习率,使用像 SGD 这样的简单优化器,并确保使用相同的加载器加载数据。我还尝试使用骰子/jaccard 损失来解决班级不平衡问题。这些都没有奏效。

有没有人经历过这种情况?任何帮助将不胜感激。谢谢!

1个回答

UNET 与 RDRCNN 和 Tiramisu 等更深层次的网络之间的区别在于,更深层次的网络具有 Batch Normalization 层。它们还包括辍学。

我认为这可能是卷积层中的偏差项,但所有这些层的偏差都设置为“假”。我尝试了正则化,改变了 Batch Norm 层的动量值,并删除了最接近输出的 Batch Norm 层。然而,唯一有效的方法是完全移除所有 Batch Norm 层或完全移除所有 dropout。

看来这是我的数据问题。某些图像加剧了同时使用批量标准化和 dropout 的常见问题。对于某些人来说,这可能会在网络中引入过多的噪声,从而导致错误的预测。