You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算PyTorch中两个一维张量对应元素的逐元素均方误差

实现逐元素均方误差(Element-wise MSE)的两种实用方法

没问题,要拿到每个对应元素的均方误差其实超简单,完全不用折腾复杂逻辑,给你两种直接能用的方法:

方法一:手动直接计算(最直观)

逐元素MSE的本质就是每个预测值与真实值差值的平方,直接用PyTorch的张量运算就能实现:

import torch

def elementWiseMSE(y_pred, y_true):
    # 返回和输入形状完全一致的逐元素均方误差张量
    return torch.square(y_pred - y_true)

调用这个函数后,返回的loss_tensor形状就是torch.Size([2730441, 1]),完美匹配你的需求。

方法二:利用PyTorch内置MSELoss类

如果你更习惯用PyTorch原生的损失函数,只需要修改reduction参数就行——默认的reduction='mean'会返回整体均值,改成reduction='none'就会保留逐元素的损失值:

import torch

# 初始化损失函数,设置reduction为'none'以保留逐元素结果
mse_loss_fn = torch.nn.MSELoss(reduction='none')
# 计算逐元素MSE
loss_tensor = mse_loss_fn(y_pred, y_true)

这个方法得到的结果和手动计算完全一致,输出形状同样是[2730441, 1]。

快速验证效果

你可以用小张量测试下结果是否符合预期:

y_pred = torch.tensor([[1.0], [2.0], [3.0]])
y_true = torch.tensor([[0.0], [2.0], [4.0]])

# 方法一输出
print(elementWiseMSE(y_pred, y_true))
# 方法二输出
print(mse_loss_fn(y_pred, y_true))

两种方法的输出都是:

tensor([[1.],
        [0.],
        [1.]])

内容的提问来源于stack exchange,提问作者Guilty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 15:47:36