gpt4 book ai didi

pytorch - 为什么 nn.CrossEntropyLoss 在我验证输入为非 0 维时抛出 "TypeError: iteration over a 0-d tensor"?

转载 作者:行者123 更新时间:2023-12-01 23:59:28 28 4
gpt4 key购买 nike

我使用的是 PyTorch 1.5.0 版。当我传递一个大小为 [8,21,400,400] 且目标大小为 [8,400,400] 的输入 torch 张量时,程序会引发 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

最佳答案

你得到这个错误是因为 nn.CrossEntropyLoss 只返回一个 torch.Tensor,而不是一对(它不返回精度)。这个张量是 0 维的,即一个数字(除非您不将 reduction 参数重写为 'none' 以获得每个元素的损失)。因此,当您尝试将其值分配给两个变量 loss, accuracy 时,python 会尝试遍历此张量变量,因此会出现错误消息。只需使用 loss = lossLayer(pred2, targetBatch)

关于pytorch - 为什么 nn.CrossEntropyLoss 在我验证输入为非 0 维时抛出 "TypeError: iteration over a 0-d tensor"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62109287/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com