计算两个张量之间的均方误差的困难

Difficulties calculating mean square error between 2 tensors

我正在尝试构建一个损失函数,它将计算 2 个相同大小的男高音的均方误差。 换句话说,我需要一个函数来计算矩阵 A 和矩阵 B 上每 2 个单元格(具有相同的行和列)单元格的差异,将其平方并计算差异的平均值。

据我了解 nn.MSELoss 应该这样做。

当我将 2 个张量传递给 nn.MSELoss 时,我收到以下错误消息:

RuntimeError: Boolean value of Tensor with more than one value is ambiguous

这是我的代码

nn.MSELoss(stack_3[0,:],stack_7[0,:])

张量是相同形状的浮点数。

stack_3.shape, stack_7.shape
(torch.Size([6131, 784]), torch.Size([6131, 784]))

nn.MSELoss 是可调用的 class,不是函数。你需要先定义一个nn.MSELoss的实例,然后你就可以调用它了。或者你可以直接使用 torch.nn.functional.mse_loss.

from torch import nn
criterion = nn.MSELoss()
loss = criterion(stack_3[0, :], stack_7[0, :])

import torch.nn.functional as F
loss = F.mse_loss(stack_3[0, :], stack_7[0, :])