torch.nn中的L1Loss和MSELoss

这篇具有很好参考价值的文章主要介绍了torch.nn中的L1Loss和MSELoss。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们打开Pytorch官网,找到torch.nn中的loss function,进去如下图所示。

torch.nn中的L1Loss和MSELoss,机器学习,pytorch,深度学习,python 

L1LOSS

我们先来看看 L1LOSS 损失函数的使用。下图是官网给出的描述。

torch.nn中的L1Loss和MSELoss,机器学习,pytorch,深度学习,python

        L1loss有两种方式,一种是将所有误差累加作为总损失,另一种是将所有误差累加之后求平均作为总损失。
        例如,给定输入为input = [1,2,3],期望目标为target = [1,2,5],若L1loss采用累加求和求总损失,那么会有总损失L=|1-1|+|2-2|+|5 -3|=2。如示例2所示。
     若L1loss采用累计求和后求平均作为总损失,那么则有总损失L=(|1-1|+|2-2|+|5 -3|)/3=0.6667。如示例1所示。

我们用代码来实现L1loss功能。

示例1:L1loss的方式为累加求和后求平均。 

import torch
from torch.nn import L1Loss
inputs = torch.tensor([1, 2, 3], dtype=torch.float32)
targets = torch.tensor([1, 2, 5], dtype=torch.float32)

inputs = torch.reshape(inputs, (1, 1, 1, 3))
targets = torch.reshape(targets, (1, 1, 1, 3))

loss = L1Loss()
result = loss(inputs, targets)
print(result) # tensor(0.6667)

示例2:L1loss的方式为累加求和。 此时L1loss中的参数reduction应为 'sum'。默认为’mean‘。

import torch
from torch.nn import L1Loss
inputs = torch.tensor([1, 2, 3], dtype=torch.float32)
targets = torch.tensor([1, 2, 5], dtype=torch.float32)

inputs = torch.reshape(inputs, (1, 1, 1, 3))
targets = torch.reshape(targets, (1, 1, 1, 3))


loss = L1Loss(reduction='sum')
result = loss(inputs, targets)
print(result) # tensor(2.)

MSELOSS

我们再来看看 MSELOSS 损失函数的使用。下图是官网给出的描述。
torch.nn中的L1Loss和MSELoss,机器学习,pytorch,深度学习,python

        MSELOSS 与 L1LOSS唯一的区别是MSELOSS在计算每一项损失时都考虑平方。我们以上面的例子为例。
        给定输入为input = [1,2,3],期望目标为target = [1,2,5],若MSEloss采用累加求和求总损失,那么会有总损失L=(1-1)^2+(2-2)^2+(5 -3)^2=4。如示例3所示。
     若 MSEloss 采用累计求和后求平均作为总损失,那么则有总损失L = {(1-1)^2+(2-2)^2+(5 -3)^2 } /3=4/3。如示例4所示。

示例3

import torch
from torch.nn import MSELoss
inputs = torch.tensor([1, 2, 3], dtype=torch.float32)
targets = torch.tensor([1, 2, 5], dtype=torch.float32)

inputs = torch.reshape(inputs, (1, 1, 1, 3))
targets = torch.reshape(targets, (1, 1, 1, 3))


loss = MSELoss(reduction='sum')
result = loss(inputs, targets)
print(result) # tensor(4.)

示例4文章来源地址https://www.toymoban.com/news/detail-697909.html

import torch
from torch.nn import MSELoss
inputs = torch.tensor([1, 2, 3], dtype=torch.float32)
targets = torch.tensor([1, 2, 5], dtype=torch.float32)

inputs = torch.reshape(inputs, (1, 1, 1, 3))
targets = torch.reshape(targets, (1, 1, 1, 3))


loss = MSELoss()
result = loss(inputs, targets)
print(result) # tensor(1.3333)

到了这里,关于torch.nn中的L1Loss和MSELoss的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyTorch中的torch.nn.Parameter() 详解

    今天来聊一下PyTorch中的torch.nn.Parameter()这个函数,笔者第一次见的时候也是大概能理解函数的用途,但是具体实现原理细节也是云里雾里,在参考了几篇博文,做过几个实验之后算是清晰了,本文在记录的同时希望给后来人一个参考,欢迎留言讨论。 先看其名,parameter,中文

    2023年04月08日
    浏览(85)
  • PyTorch中的torch.nn.Linear函数解析

    torch.nn是包含了构筑神经网络结构基本元素的包,在这个包中,可以找到任意的神经网络层。这些神经网络层都是nn.Module这个大类的子类。torch.nn.Linear就是神经网络中的线性层,可以实现形如y=Xweight^T+b的加和功能。 nn.Linear():用于设置网络中的全连接层,需要注意的是全连接

    2024年02月16日
    浏览(39)
  • python中的torch.nn.Softmax() 用法和例子 dim=1 dim=2

    torch.nn.Softmax() 是 PyTorch 中的一个类,用于实现 softmax 函数。softmax 函数是一种常用的激活函数,它可以将一个向量转换成一个概率分布,使得每个元素都是非负数且和为 1。softmax 函数通常在分类问题中使用,可以将一个多分类问题转换成多个二分类问题,从而得到每个类别的

    2024年02月16日
    浏览(104)
  • Pytorch计算余弦相似度距离——torch.nn.CosineSimilarity函数中的dim参数使用方法

    前言 一、官方函数用法 二、实验验证 1.计算高维数组中各个像素位置的余弦距离 2.验证高维数组中任意一个像素位置的余弦距离 总结 现在要使用Pytorch中自带的 torch.nn. CosineSimilarity函数计算两个高维特征图(B,C,H,W)中各个像素位置的特征相似度,即特征图中的每个像素位置上

    2024年02月13日
    浏览(40)
  • loss = nn.CrossEntropyLoss(reduction=‘none‘)

    nn.CrossEntropyLoss() 函数是 PyTorch 中用于计算交叉熵损失的函数。 其中 reduction 参数用于 控制输出损失的形式 。 当 reduction=\\\'none\\\' 时,函数会输出一个形状为 (batch_size, num_classes) 的矩阵,表示 每个样本的每个类别的损失 。 当 reduction=\\\'sum\\\' 时,函数会对 矩阵求和 ,输出一个标量

    2024年02月14日
    浏览(35)
  • torch.nn.functional.grid_sample(F.grid_sample)函数的说明 & 3D空间中的点向图像投影的易错点

    由于二者有一定共通之处,因此放在一篇文章内介绍。   该函数的作用是在图像/体素空间中采样特征。 变量名 数据类型 默认值 含义 备注 input Tensor - 原始图像/体素空间的特征 形状需为 ( B , C , H , W ) (B,C,H,W) ( B , C , H , W ) 或 ( B , C , D , H , W ) (B,C,D,H,W) ( B , C , D , H , W ) ,分

    2023年04月24日
    浏览(46)
  • 【torch.nn.PixelShuffle】和 【torch.nn.UnpixelShuffle】

    PixelShuffle是一种上采样方法,它将形状为 ( ∗ , C × r 2 , H , W ) (∗, Ctimes r^2, H, W) ( ∗ , C × r 2 , H , W ) 的张量重新排列转换为形状为 ( ∗ , C , H × r , W × r ) (∗, C, Htimes r, Wtimes r) ( ∗ , C , H × r , W × r ) 的张量: 举个例子 输入的张量大小是 (1,8,2,3) ,PixelShuffle的 缩放因子是

    2024年02月13日
    浏览(39)
  • 【torch.nn.Fold】和【torch.nn.Unfold】

    torhc.nn.Unfold的功能: 从一个batch的样本中,提取出滑动的局部区域块 patch (也就是卷积操作中的提取kernel filter对应的滑动窗口)把它按照顺序展开,得到的特征数就是 通道数*卷积核的宽*卷积核的高 , 下图中的 L 就是滑动完成后总的 patch的个数 。 举个例子: 下图中的红框

    2024年02月13日
    浏览(30)
  • torch.nn.BCEWithLogitsLoss与torch.nn.BCELoss

    torch.nn.BCEWithLogitsLoss 相当于 sigmoid + torch.nn.BCELoss 。代码示例如下,

    2024年02月16日
    浏览(37)
  • Pytorch学习:神经网络模块torch.nn.Module和torch.nn.Sequential

    官方文档:torch.nn.Module CLASS torch.nn.Module(*args, **kwargs) 所有神经网络模块的基类。 您的模型也应该对此类进行子类化。 模块还可以包含其他模块,允许将它们嵌套在树结构中。您可以将子模块分配为常规属性: training(bool) -布尔值表示此模块是处于训练模式还是评估模式。

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包