如何在PyTorch中测量平均绝对误差(MAE)?


平均绝对误差计算的是输入值和目标值(预测值和实际值)之间绝对差之和的平均值。为了在PyTorch中计算平均绝对误差,我们使用torch.nn模块提供的L1Loss()函数。它创建一个度量平均绝对误差的标准。

实际值和预测值都是具有相同元素数量的torch张量。这两个张量可以具有任意数量的维度。此函数返回一个标量值的张量。它是torch.nn模块提供的损失函数的一种类型。损失函数用于通过最小化损失来优化深度神经网络。

语法

torch.nn.L1Loss()

步骤

要测量平均绝对误差,可以按照以下步骤操作:

  • 导入所需的库。在以下所有示例中,所需的Python库是torch。确保您已安装它。

import torch
  • 创建输入和目标张量并打印它们。

input = torch.randn(3, 4)
target = torch.randn(3, 4)
  • 创建一个标准来测量平均绝对误差。

mae = nn.L1Loss()
  • 计算平均绝对误差(损失)并打印它。

output = mae(input, target)
print("MAE loss:", output)

示例1

在此Python代码中,我们计算2维输入和目标张量之间的平均绝对误差损失。

# Import the required libraries
import torch
import torch.nn as nn

# define the input and target tensors
input = torch.randn(3, 4)
target = torch.randn(3, 4)

# print input and target tensors
print("Input Tensor:
", input) print("Target Tensor:
", target) # create a criterion to measure the mean absolute error mae = nn.L1Loss() # compute the loss (mean absolute error) output = mae(input, target) # output.backward() print("MAE loss:", output)

输出

Input Tensor:
   tensor([[-0.3743, -1.3795, 0.7910, -0.8501],
      [-0.4872, 0.3542, -1.1613, 0.2766],
      [-0.0343, 0.6158, 1.5640, -1.5776]])
Target Tensor:
   tensor([[-0.1976, -0.5571, 0.0576, -0.6701],
      [ 0.3859, -0.4046, -1.3166, 0.0288],
      [ 0.7254, 0.5169, 0.2227, 0.9585]])
MAE loss: tensor(0.7236)

请注意,输入和目标张量是二维张量,而平均绝对误差是标量值。

示例2

在此示例中,我们计算2维输入和目标张量之间的平均绝对误差损失。这里,输入是一个需要参数requires_grad = True的张量。我们还计算关于输入值的梯度。

# Import the required libraries
import torch
import torch.nn as nn

# define the input and target tensors
input = torch.randn(4, 5, requires_grad = True)
target = torch.randn(4, 5)

# print input and target tensors
print("Input Tensor:
", input) print("Target Tensor:
", target) # create a criterion to measure the mean absolute error loss = nn.L1Loss() # compute the loss (mean absolute error) output = loss(input, target) output.backward() print("MAE loss:", output) print("input.grad:
", input.grad)

输出

Input Tensor:
   tensor([[-1.5325, 0.9718, 0.8848, -2.3685],
      [ 0.1574, -0.5296, -0.1587, -0.6423],
      [-1.9586, 0.6249, -1.1507, -1.7188]],
      requires_grad=True)
Target Tensor:
   tensor([[-0.2213, -1.0928, 0.1864, 0.6496],
      [ 0.9031, 1.3741, -0.9058, -2.0849],
      [-0.7316, -0.9297, -1.4479, 0.9797]])
MAE loss: tensor(1.4757, grad_fn=<L1LossBackward>)
input.grad:
   tensor([[-0.0833, 0.0833, 0.0833, -0.0833],
      [-0.0833, -0.0833, 0.0833, 0.0833],
      [-0.0833, 0.0833, 0.0833, -0.0833]])

请注意,在上面的输出中,平均绝对误差是一个grad函数(L1LossBackward)。梯度张量的尺寸与输入张量相同。

更新于:2022年1月20日

浏览量:5K+

启动您的职业生涯

完成课程获得认证

开始学习
广告