当出现以上问题多次尝试无果的情况下,请仔细检查代码,是否出现不合理的地方,例如backward()位置,eg:代码如下

self.model.zero_grad()
self.criterion.zero_grad()
loss.backward() 
loss = self.reduce_mean(loss, dist.get_world_size())
self.optim.step()

关键点:backward()是计算损失函数对模型参数的梯度,实现反向传播算法,通常在loss计算之后

解决办法如下:将backward()之后计算loss的代码注释掉,如下所示

self.model.zero_grad()
self.criterion.zero_grad()
loss.backward() 
# loss = self.reduce_mean(loss, dist.get_world_size()) # 求损失均值,通常是多卡的情况下使用
self.optim.step()
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐