我使用PyTorch的AutomaticMixedPrecision功能来训练占地面积和精度更小的网络
在某个时刻,网络中的一些嵌入的张量中有NaN,所以我想用0来代替它们,以便执行在线硬负样本挖掘。
然而,在像这样替换张量中的NaNs之后:
tensor[torch.isnan(tensor)] = 0
在执行下一个缩放器ste(scaler.step(优化器((时,我得到了以下错误:
assert len(optimizer_state["found_inf_per_device"]) > 0, "No inf checks were recorded for this optimizer."
AssertionError: No inf checks were recorded for this optimizer.
在消除此错误的同时,将NaN归零的正确方法是什么?
您能向我们展示您的完整代码吗。通常,如果步骤(批次(含有NaN,则建议跳过该步骤。
另请查看torch.nan_to_num.