【Bug解决】AttributeError: ‘DataParallel‘ object has no attribute ‘XXX‘

报错内容:

raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'DataParallel' object has no attribute 'XXX'

报错信息的意思是 DataParallel object 没有 attribute/method XXX。

报错原因: 多卡训练使用 DataParallel,导致原本 model 中的方法名添加了前缀 module(和参数名变化的原理一样)。

解决: 使用 model.module.XXX 而不是 model.XXX

model = DataParallel(model)
...
model.module.XXX()