You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch NLLLoss的ignore_index默认值设置原因与使用场景问询

torch.nn.NLLLoss的ignore_index默认值为-100的原因
  • 历史兼容:PyTorch早期设计对标Torch7框架的损失函数规范,Torch7中分类类损失的默认忽略索引就为-100,沿用该值可以降低老框架用户迁移的适配成本,也能兼容早期基于PyTorch开发的开源项目代码。
  • 避免标签冲突:绝大多数分类、序列标注类任务的有效标签都是从0开始计数的非负整数,-100作为绝对值较大的负值,几乎不会和正常业务的有效标签范围重叠;同时很多数据预处理流程会用-1、-2这类小负值做中间状态标记,用-100也能避免和这类临时标记冲突,降低误用概率。
  • 行业约定俗成:目前该默认值已经成为AI开发领域的通用规范,包括Hugging Face、MM系列等主流开源框架的预处理、损失模块默认都用-100作为忽略标签,不同组件对接时不需要额外转换标签值,减少开发bug。

补充:逻辑上只要设置的ignore_index不在你的有效标签范围内,任意负值都能实现等效的忽略效果,官方选择-100只是为了统一规范,并非只有该值能生效。

需要使用ignore_index的常见场景
  • 序列任务的Padding忽略:NLP、语音识别等序列任务中,不同样本长度不一致,通常会补Padding到相同长度后批量训练,Padding位置不需要参与损失计算,直接将Padding对应的标签设为ignore_index的值即可。
  • 多任务训练的损失屏蔽:多任务联合训练时,部分样本可能只有某一个任务的标签,就将其他无标签任务对应的标签全部设为ignore_index,对应任务的损失不会回传,避免无标签数据干扰对应任务头的训练。
  • 半监督/弱监督学习的噪点过滤:半监督学习中的无标注样本、弱监督学习中置信度较低的标注样本,都可以将对应标签设为ignore_index,训练时直接跳过这部分样本的损失计算,避免噪点带偏模型效果。
  • 计算机视觉任务的特殊区域屏蔽:图像分割任务中未标注的边缘区域、目标检测任务中不需要参与训练的难例样本,都可以设置ignore_index忽略对应区域/样本的损失,无需额外过滤数据。

内容的提问来源于stack exchange,提问作者Sam-gege

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:24:03