torch.sub 的输出错误?

Wrong outputs from torch.sub?

我目前正在使用 torch.sub 和 torch.div 来获得神经网络的预测标签和真实标签之间的 MAPE,尽管我没有得到我期望的答案。根据文档中的示例,我应该得到一个 4x1 张量,而不是 4x4。 谁能帮我解决这个问题?

print('y_true ', y_true)
y_true tensor([[ 46],
[262],
[ 33],
[ 35]], device=‘cuda:0’, dtype=torch.int16)

print('y_pred ', y_pred)
y_pred tensor([[[308.5075]],
[[375.8983]],
[[389.4587]],
[[406.4957]]], device=‘cuda:0’, grad_fn=)

print('torch.sub ', torch.sub(y_true, y_pred))
torch.sub tensor([[[-262.5075],
[ -46.5075],
[-275.5075],
[-273.5075]],

    [[-329.8983],
     [-113.8983],
     [-342.8983],
     [-340.8983]],

    [[-343.4587],
     [-127.4587],
     [-356.4587],
     [-354.4587]],

    [[-360.4957],
     [-144.4957],
     [-373.4957],
     [-371.4957]]], device='cuda:0', grad_fn=<SubBackward0>)

那是因为y_pred有一个额外的维度,这意味着y_true张量 可能会广播到正确的维度。

如果删除多余的最后一个维度,您将获得所需的结果:

>>> torch.sub(y_true, y_pred[...,0]).shape
torch.Size([4, 1])