pytorch:NLLLossignore_index默认值

Sam*_*ge 4 python torch pytorch

在 pytorch NLLLoss文档中,ignore_index 的默认值是 -100 而不是通常的None,有什么特殊原因吗?似乎任何负值都是等价的。

顺便说一句,我想忽略索引的原因可能是什么?谢谢!

Iva*_*van 5

的值ignore_index必须是int,这就是为什么默认值是int而不是None。默认值是任意的,它可以是任何负数,不是“有效”类标签的任何值。该函数将忽略目标实例具有该类标签的所有元素。实际上,此选项可用于识别未标记的像素,例如在密集预测任务中。


编辑:追溯 的实现,我们可以在 的实现nn.NLLLoss中找到此注释:nll_losstorch/onnx/symbolic_opset12.py

# in onnx NegativeLogLikelihoodLoss specification, ignore_index is optional without default value.
# therefore we need to set ignore_index attribute even if it is not specified (e.g. ignore_index=-100).
ignore_index = sym_help._maybe_get_const(ignore_index, "i")
Run Code Online (Sandbox Code Playgroud)

  • 另一个常见的例子是在不同大小的张量的批次中进行填充;对于文本输入来说,这是非常常见的情况(例如,很少有文本片段具有“完全相同”的长度)。 (3认同)