AssertionError:在 Pytorch 的 AutomaticMixedPrecision 中没有记录此优化器的 inf 检查

Jja*_*ang 5 python deep-learning pytorch

我正在使用 PyTorch 的 AutomaticMixedPrecision 功能来训练具有更小占用空间和精度的网络。
在某个时刻,网络中的一些嵌入的张量中包含 NaN,因此我想将其替换为 0,以便执行在线硬负样本挖掘​​。

然而,在像这样替换张量中的 NaN 之后:

tensor[torch.isnan(tensor)] = 0
Run Code Online (Sandbox Code Playgroud)

在执行下一个缩放器 ste (scaler.step(optimizer)) 时出现以下错误:

    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.
Run Code Online (Sandbox Code Playgroud)

在消除此错误的同时将 NaN 归零的正确方法是什么?

Far*_*azi 1

您能向我们展示您的完整代码吗?一般来说,如果有 NaN,建议跳过该步骤(批量)。

另请查看torch.nan_to_num