如何在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)。梯度张量的尺寸与输入张量相同。
广告