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

贝叶斯神经网络训练CrossEntropyLoss报Target超出边界如何修改

报错根因

你遇到的IndexError: Target 11 is out of bounds是分类任务中非常典型的输出维度不匹配问题:
PyTorch的CrossEntropyLoss要求模型输出的最后一维维度必须和分类任务的总类别数完全一致。你当前的数据集是32分类任务(标签取值范围为0~31),但原模型最后一层的输出维度设置为out_features=3,仅支持3分类任务,当遇到标签值≥3的样本时就会触发越界错误。

适配修改方案

1. 核心修改:调整模型最后一层输出维度

直接将原模型最后一层贝叶斯线性层的out_features参数从3改为32即可,修改后的模型定义如下:

model = nn.Sequential(
    bnn.BayesLinear(prior_mu=0, prior_sigma=0.1, in_features=5, out_features=100),
    nn.ReLU(),
    bnn.BayesLinear(prior_mu=0, prior_sigma=0.1, in_features=100, out_features=32),
)

2. 可选优化调整

如果修改后模型训练效果达不到预期,可以根据实际情况调整以下参数:

  • 隐藏层维度:将第一层贝叶斯线性层的out_features从100适当调高到128/256,提升模型拟合能力
  • 超参数:调整klweight、学习率lr的取值,或者增加训练轮次
  • 标签类型:确认target_tensor的数据类型为torch.long,符合CrossEntropyLoss的输入要求

内容的提问来源于stack exchange,提问作者Yumeng Xu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:07