IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)错误解决办法

在使用pytorch交叉熵损失函数loss = nn.CrossEntropyLos(v, targets)时发现报错

IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)。

排查后发现模型预测值V在训练阶段最后一个step时,tensor维度从二维变成一维,导致出错。

例:训练集个数81,bs设置为4时,最后一个step 只剩1张图片。最后step时tensor维度从二维变成一维。

于是添加以下判断语句解决问题。如果有其他方法,可以交流一下。

1.

 v = net(inputs)
 if len(v.shape)==1:  #方式出现训练最后一个step时,出现v是一维的情况
     v=torch.unsqueeze(v,0)  
 loss = loss_func(v, targets)

2.可以在DataLoader中drop_last参数设置False

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值