Pytorch 计算rmse时Pytork掩码缺少值

Pytorch 计算rmse时Pytork掩码缺少值,pytorch,Pytorch,我试图计算两个火炬张量的rmse误差。我想忽略/屏蔽标签为0(缺少值)的行。我如何修改此行以考虑该限制 torch.sqrt(((preds.detach() - labels) ** 2).mean()).item() 提前感谢。这可以通过定义一个自定义MSE损失函数*来解决,该函数可以从输入张量和目标张量中屏蔽缺失的值0: def mse_loss_with_nans(input, target): # Missing data are nan's # mask = to

我试图计算两个火炬张量的rmse误差。我想忽略/屏蔽标签为0(缺少值)的行。我如何修改此行以考虑该限制

torch.sqrt(((preds.detach() - labels) ** 2).mean()).item()

提前感谢。

这可以通过定义一个自定义MSE损失函数*来解决,该函数可以从输入张量和目标张量中屏蔽缺失的值0:

def mse_loss_with_nans(input, target):

    # Missing data are nan's
    # mask = torch.isnan(target)

    # Missing data are 0's
    mask = target == 0

    out = (input[~mask]-target[~mask])**2
    loss = out.mean()

    return loss

(*)从优化的角度来看,计算MSE相当于RMSE,其优点是计算速度更快。

preds的形状是什么?
preds的形状是什么?它的形状是(batch_size=32,timestamp=12,nodes=207,features=2)使用
打印(preds.shape)
并粘贴在这里。我忘记了批数。torch.size([10, 32, 12, 207, 2])