PyTorch学习笔记:nn.MSELoss——MSE损失

文章介绍了PyTorch中的MSELoss函数,用于计算平方误差损失,也称L2损失。它接受两个相同形状的输入x和y,计算它们对应元素的差的平方,并可通过reduction参数选择输出损失的处理方式,包括none(不处理),mean(平均值)和sum(求和)。示例代码展示了不同reduction设置下的损失输出,并提供了一个简单的绘图程序来可视化MSELoss函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PyTorch学习笔记:nn.MSELoss——MSE损失

torch.nn.MSELoss(size_average = Nonereduce = None,reduction = 'mean')

功能:创建一个平方误差(MSE)损失函数,又称为L2损失:
l ( x , y ) = L = { l 1 , … , l N } T , l n = ( x n − y n ) 2 l(x,y)=L=\{l_1,\dots,l_N\}^T,l_n=(x_n-y_n)^2 l(x,y)=L={l1,,lN}T,ln=(xnyn)2
其中, N N N表示batch size。

函数图像:

在这里插入图片描述

输入:

  • size_averagereduce已经被弃用,具体功能可由reduction替代
  • reduction:指定损失输出的形式,有三种选择:none|mean|sumnone:损失不做任何处理,直接输出一个数组;mean:将得到的损失求平均值再输出,会输出一个数;sum:将得到的损失求和再输出,会输出一个数

注意:

  • 输入的 x x x y y y可以是任意维数的数组,但是二者形状必须一致

代码案例

对比reduction不同时,输出损失的差异

import torch.nn as nn
import torch

x = torch.rand(10, dtype=torch.float)
y = torch.rand(10, dtype=torch.float)
mse_none = nn.MSELoss(reduction='none')
mse_mean = nn.MSELoss(reduction='mean')
mse_sum = nn.MSELoss(reduction='sum')
out_none = mse_none(x, y)
out_mean = mse_mean(x, y)
out_sum = mse_sum(x, y)
print(x)
print(y)
print(out_none)
print(out_mean)
print(out_sum)

输出

# 用于输入的x
tensor([0.4138, 0.1747, 0.9259, 0.2938, 0.5557, 0.9708, 0.0649, 0.6155, 0.3192, 0.1918])
# 用于输入的y
tensor([0.1024, 0.9160, 0.8386, 0.0783, 0.1479, 0.9933, 0.8791, 0.4219, 0.7586, 0.2212])
# 当reduction设置为none时,输出一个数组
# 该数组上的元素为x,y对应每个元素的平方误差损失,即对应元素做差求平方
tensor([9.6983e-02, 5.4955e-01, 7.6214e-03, 4.6433e-02, 1.6630e-01, 5.0293e-04, 6.6287e-01, 3.7512e-02, 1.9310e-01, 8.6344e-04])
# 当reduction设置为mean时,输出所有损失的平均值
tensor(0.1762)
# 当reduction设置为sum时,输出所有损失的和
tensor(1.7617)

注:绘图程序

import torch.nn as nn
import torch
import numpy as np
import matplotlib.pyplot as plt

loss = nn.MSELoss(reduction='none')
x = torch.tensor([0]*100)
y = torch.from_numpy(np.linspace(-3,3,100))
loss_value = loss(x,y)
plt.plot(y, loss_value)
plt.savefig('MSELoss.jpg')

官方文档

nn.MSELoss:https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html#torch.nn.MSELoss

初步完稿于:2022年1月29日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉萌新、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值