在深度学习中,有时候会遇到各种奇奇怪怪的问题,这些问题也不容易在网上搜到解答。一些有报错的问题还好,没有报错的问题简直就是灾难。
在刚开始训练的时候,ce loss 是明显下降的,但训练了一段时间后,在以上图片中,可以看到dice loss有轻微下降,而ce loss几乎不动,模型还没有收敛,这时候肯定是出问题了。
问题在哪呢?
我用的是Pytorch中的CrossEntropyLoss()函数。注意这个函数是自带softmax操作的。
而我在传入网络输出前,又做了一次softmax。这样就做了两层的softmax。这就导致了交叉熵损失下降不下去,回传梯度几乎为0。
解决方法
删掉一层softmax。