pytorch:NLLLoss ignore_索引默认值

2024-10-02 14:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

在pytorch NLLLossdoc中,忽略索引的默认值是-100,而不是通常的None,有什么特殊原因吗?似乎任何负值都是等价的

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


Tags: none原因pytorch等价负值nlllossdoc
2条回答

我觉得他们应该使用None作为默认值。Python不是静态类型的,所以不需要^ {CD2}}是 int eEM>(甚至静态类型的语言,比如C++)现在有选项类型),如果失败的话,它们可以使用^ {CD3}},这就不那么令人讨厌了。p>

那么,至少他们为什么不使用-1

一种可能性是,作者担心-1会被误解为“最后一个”。我发现-100是从Torch的Lua版本继承的。虽然在Lua中,-1通常并不表示“最后”,但Lua Torch的Tensorused this convention

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


Edit:追溯^{}的实现,我们可以在^{}nll_loss实现中找到以下注释:

# 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")

相关问题 更多 >