当我验证输入为非0维时,为什么nn.CrossEntropyLoss抛出“ TypeError:在0维张量上迭代”?

问题描述 投票:0回答:1
我正在使用PyTorch 1.5.0版。当我传递大小为[8,21,400,400]的输入火炬张量且目标大小为[8,400,400]时,程序将引发TypeError:在0-d张量上迭代。但是,参数的维度分别为4和3。

什么可能导致此错误?

追溯指向torch \ tensor.py的

iter函数。

Traceback (most recent call last): File "train.py", line 108, in <module> loss, accuracy = lossLayer(pred2, targetBatch) File "C:\Users\PC\anaconda3\lib\site-packages\torch\tensor.py", line 462, in __iter__ raise TypeError('iteration over a 0-d tensor') TypeError: iteration over a 0-d tensor
pytorch
1个回答
0
投票
您会收到此错误,因为nn.CrossEntropyLoss仅返回一个torch.Tensor,而不是一对(它不返回精度)。因此,当您尝试将其值分配给两个变量loss, accuracy时,python会尝试对该张量变量进行迭代,因此会出现错误消息。只需使用loss = lossLayer(pred2, targetBatch)
© www.soinside.com 2019 - 2024. All rights reserved.