报错截图

MMDet——报错解决:RuntimeError: Expected to have finished reduction in the prior iteration before_传参数

报错原因

有部分参数初始化了,但是并没有在模型的foward过程中使用,因此没有梯度无法反传参数更新。

解决方法

  • 如果确实某些网络结构是不需要使用的,那我们就直接去除即可,但首先我们需要debug出哪些参数和结构是没有被用到了,然后针对性去除即可:

找出参数

  • 只需要在你正常的分布式命令前加入​​TORCH_DISTRIBUTED_DEBUG=DETAIL​​即可:
TORCH_DISTRIBUTED_DEBUG=DETAIL bash tools/dist_train.sh config/xxx.py 1

运行后的得到具体没有梯度的参数:

MMDet——报错解决:RuntimeError: Expected to have finished reduction in the prior iteration before_传参数_02

注释掉这些网络结构即可~