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

训练RGB+深度输入的分类器时损失函数报错AttributeError: 'list'对象无size属性

报错根因
  • AttributeError: 'list' object has no attribute 'size'触发的原因是你调用BCEWithLogitsLoss计算损失时,传入的输入参数或者目标参数是Python列表类型,不是PyTorch张量,损失函数内部调用.size()做尺寸校验时失败。
问题排查方向
  • 检查你的backbone网络输出:很多特征提取、分割类网络会返回多尺度输出组成的列表,而不是单张预测张量。你可以在sal_output = backbone(sal_input)后新增打印代码确认类型:
print(type(sal_output), isinstance(sal_output, list), len(sal_output) if isinstance(sal_output, list) else sal_output.shape)

如果确认是列表,取你需要用来计算损失的对应张量即可,比如取第一个输出:sal_output = sal_output[0]

  • 检查你的数据集加载逻辑:确认train_loader返回的sal_label是否为PyTorch张量,如果数据集的__getitem__方法直接返回了列表类型的标签,需要手动转换为张量:sal_label = torch.tensor(sal_label, dtype=torch.float32)
额外注意事项

你当前代码里多模态输入的拼接维度存在错误:sal_input = torch.cat((sal_image, sal_depth), dim=0)是在批次维度拼接,会导致输入的批次大小变为原来的2倍,后续即使类型问题修复,也会出现输出和标签批次尺寸不匹配的报错。拼接RGB和深度这类多模态输入应该在通道维度拼接,修改为:

sal_input = torch.cat((sal_image, sal_depth), dim=1)

内容的提问来源于stack exchange,提问作者Samra Kanwal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:48:03