网站推广优化网址,销售成功案例分享,网络广告营销案例,网站访问量asp据别的文章说#xff0c;学习率过高或者adam算法没加入eps参数也可能导致模型输出nan. 这个可以一开始就加上试试。先判断loss是否正常#xff0c;再使用判断梯度是否正常。出现NAN。 loss.backward()for name, parms in model.named_parameters():if parms.grad is None or…据别的文章说学习率过高或者adam算法没加入eps参数也可能导致模型输出nan. 这个可以一开始就加上试试。先判断loss是否正常再使用判断梯度是否正常。出现NAN。 loss.backward()for name, parms in model.named_parameters():if parms.grad is None or parms.grad[0] is None:print(--name:, name, --grad_requirs:,parms.requires_grad, --grad_value_has_nan:, parms.grad)else:print(--name:, name, --grad_requirs:,parms.requires_grad, --grad_value_has_nan:, torch.isnan(parms.grad).any()) 定位具体代码。 torch.autograd.set_detect_anomaly(True)optimizer.zero_grad(set_to_noneTrue)注意查查中间变量是否出现inf值
print(torch.max(sample_points_cam),torch.min(sample_points_cam),sample_points_cam.dtype)
# 注意数据类型很可能是数据类型不匹配导致显示为inf一般 乘法除法易出现inf导致nan多使用torch.squeeze(x,0)而不是x.squeeze(0) 、多使用torch.flatten(x,1)而不是x.flatten(1)。模型如果开启了混合精度训练也可能会导致梯度nan仔细确认下面的设置。enable_ampenable_amp_dtypeGradScalerautocast。