torch.nn.MSELoss() 均方损失函数

本文介绍了PyTorch中损失函数的`reduce`和`size_average`参数(现已被`reduction`取代)的用法。当`reduce=False`时,不进行归一化操作,直接返回损失向量;若`reduce=True`(默认),则根据`size_average`决定计算平均值(`mean`)还是求和(`sum`)。示例中展示了MSELoss在不同设置下的应用。
摘要由CSDN通过智能技术生成

表达式

在这里插入图片描述
这里 loss, x, y 的维度是一样的,可以是向量或者矩阵,i 是下标。

很多的 loss 函数都有 size_average 和 reduce 两个布尔类型的参数。
因为一般损失函数都是直接计算 batch 的数据,因此返回的 loss 结果都是维度为 (batch_size, ) 的向量。

a)如果 reduce = False,那么 size_average 参数失效,直接返回向量形式的 loss
b)如果 reduce = True,那么 loss 返回的是标量
a)reduction='mean',返回均值;
b)reduction='mean',返回sum;

默认情况下, reduce = True,size_average = True

import torch
import numpy as np

loss_fn = torch.nn.MSELoss(reduction='mean')
# loss_fn = torch.nn.MSELoss(reduction='sum')
a = np.array([[1, 2], [3, 4]])
b = np.array([[2, 3], [4, 5]])

print(a)
print(torch.from_numpy(a))
# input = torch.autograd.Variable(torch.from_numpy(a))
# target = torch.autograd.Variable(torch.from_numpy(b))
# loss = loss_fn(input.float(), target.float())
# print(loss)

UserWarning

UserWarning: size_average and reduce args will be deprecated, please use reduction=‘sum’ instead. warnings.warn(warning.format(ret))

criterion = torch.nn.BCELoss(size_average=True)
改为:
criterion = torch.nn.BCELoss(reduction='mean')
criterion = torch.nn.BCELoss(size_average=False)
改为:
criterion = torch.nn.BCELoss(reduction='sum')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值