训练深度学习模型loss在第一个epoch内迅速减小到零

问题:在第一个epoch中,前几个batch训练loss不为零,但是在迅速下降,并在几个batch后直接变为零

  • 猜想1:数据集中全零标签太多。尝试删除全负样本标签,不管用×
  • 猜想2:batch size太大,导致梯度消失。尝试修改小两个数量级,不管用×
  • 答案:最后通过单步调试发现,输入到模型的标签label全为零,但是在文件夹中的标签数据是正常的。
    最后将问题定位在了这一行代码中:
    label = cv.imread(labelPath, cv.IMREAD_GRAYSCALE)
    cv.IMREAD_GRAYSCALE模式尽管是读取为灰度图像,但是要求图像是8位,我的label是16位导致读取出来全为零,才出现这个问题:
    修改cv.IMREAD_GRAYSCALE为支持所有其他位类型的 cv.IMREAD_ANYDEPTH即可
    label = cv.imread(labelPath, cv.IMREAD_ANYDEPTH)

问题:在几个epoch内,loss迅速下降,最后变为零(之前遇到过的)

  • 答案:当时的全负标签太多,并且dataset或者loss没有做类别样本平衡的处理,导致在几个epoch中,loss迅速下降,最后变为零。当时的解决办法是:
    将全负标签删除,问题得到解决。当然,现在来看,对loss的计算或者在dataset的修改都可以,让模型更加专注于你指定的类别。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容