MMSegmentation训练阶段自定义Loss不下降/下降非常缓慢问题排查

问题背景

在分割模型中引入了自定义loss(例如kl_loss),训练过程中新loss几乎不会下降,未被正常优化。

原因分析

官方文档的角落里有这么一句话:
If you want this loss item to be included into the backward graph, loss_ must be the prefix of the name.
也就是损失函数的命名必须以loss_开头。例如,kl散度损失记为loss_kl是可以正常优化的,而kl_loss则不会被优化。

解决方案

这个loss命名的问题一般存在config或者loss的具体实现代码中。对于config处:

# wrong 
# dict(type='KLLoss', loss_name='kl_loss', loss_weight=1.0)
# correct
dict(type='KLLoss', loss_name='loss_kl', loss_weight=1.0)

对于具体实现处:

# wrong
# losses['kl_loss'] = self.get_kl_loss(pred, gt)
# correct
losses['loss_kl'] = self.get_kl_loss(pred, gt)
return losses
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值