微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyTorch ValueError: 预期目标大小 (2, 33), got torch.Size([2, 73])

如何解决PyTorch ValueError: 预期目标大小 (2, 33), got torch.Size([2, 73])

我对 Pytorch 很陌生。 我想计算 Transformer 中批次的损失。在这种情况下,我的“批次”只有两个副本。 该批次输出形状为 2,73,33 的张量:

output
tensor([[[ 21.1355,-7.5047,2.8138,...,-14.1462,-15.1999,-7.2595],...
output.size()
>>> torch.Size([2,33])

目标具有每个位置的分类解决方案。它的形状为 2,73:

target.size()
>>> torch.Size([2,73])

当我计算损失时,如果我只比较第一个副本,我会得到一个值:

loss = torch.nn.CrossEntropyLoss(ignore_index=1)
loss(output[0],target[0])
tensor(0.1967)

但是当我一次完成时它会出错:

loss = torch.nn.CrossEntropyLoss(ignore_index=1)
loss(output,target)
ValueError: Expected target size (2,33),got torch.Size([2,73])

我是否必须遍历副本并对它们求平均值? 非常感谢任何帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。