Pytorch之loss(损失函数)

article/2025/10/28 8:26:39

损失函数也在torch.nn下,具体可以参考文档,也可以参考官网

先根据L1Loss举例

我个人感觉这里的描述还是到官网的文档找比较好,公式看的比文档清楚

import torch
from torch import nninputs = torch.tensor([[3, 2, 1],[1, 2, 3]], dtype=torch.float32)
target = torch.tensor([[1, 2, 1],[1, 2, 4]], dtype=torch.float32)
loss_mean = nn.L1Loss()
loss_sum = nn.L1Loss(reduction='sum')
result_mean = loss_mean(inputs, target)
result_sum = loss_sum(inputs, target)

运行后可得,可以看出默认mean是0.5,sum是3

然后尝试一下MSELoss

loss_mse = nn.MSELoss()

追加在console运行

loss_mse = nn.MSELoss()
result_mse = loss_mse(inputs, target)

相当于 (2²+0+0+0+0+1²)/6=0.833

此外还有比较常用的交叉熵损失函数
这个损失函数融合了 LogSoftmax 和 NLLLoss ,是分类问题中的常见损失函数
大概是如下计算方式

输入的input和target也有要求,input要求C种分类的N个结果,
target要求是0~C之间的N个整数,表示这N个结果对应的类别

这是官方教程提供的示例

loss = nn.CrossEntropyLoss()
input = torch.randn(3, 5, requires_grad=True)
target = torch.empty(3, dtype=torch.long).random_(5)
output = loss(input, target)
output.backward()

但是为了方便看还是自己写数吧

loss = nn.CrossEntropyLoss()
input = torch.tensor([[0.5, 1, 2],[0.5, 1, 2]])
target = torch.tensor([0, 1])
output = loss(input, target) 
""" same as:
import math
(  -0.5+math.log(math.exp(0.5)+math.exp(1)+math.exp(2))+\
-1+math.log(math.exp(0.5)+math.exp(1)+math.exp(2))  )/2
"""

使用之前的网络测试一下

import torchvision
from torch import nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear
from torch.utils.data import DataLoaderdataset = torchvision.datasets.CIFAR10("CIFAR10", train=False, transform=torchvision.transforms.ToTensor(),download=True)dataloader = DataLoader(dataset, batch_size=1)class Module(nn.Module):def __init__(self):super(Module, self).__init__()self.model = Sequential(Conv2d(3, 16, 5),MaxPool2d(2, 2),Conv2d(16, 32, 5),MaxPool2d(2, 2),Flatten(),  # 注意一下,线性层需要进行展平处理Linear(32*5*5, 120),Linear(120, 84),Linear(84, 10))def forward(self, x):x = self.model(x)return xif __name__ == '__main__':loss = nn.CrossEntropyLoss()module = Module()for data in dataloader:imgs, targets = dataoutputs = module(imgs)result_loss = loss(outputs, targets)print(' pedict:{}\n targets:{}\n loss:{}\n'.format(outputs.detach().numpy(),targets,result_loss))

然后得到类似以下输出


http://chatgpt.dhexx.cn/article/eryJeVXD.shtml

相关文章

机器学习 损失函数 Loss function

损失函数 最小二乘法极大似然估计法交叉熵 【本文根据B站-王木头学科学-视频所学】 在梯度下降中,所求的梯度其实就是损失函数的梯度。 损失函数有三种设计方法: (1)最小二乘法 (2)极大似然估计法 &#x…

Focal loss 损失函数详解

Focal loss 目前目标检测的算法大致分为两类,One Stage 、Two Stage。 One Stage:主要指类似YOLO、SGD等这样不需要region proposal,直接回归的检测算法,这类算法检测速度很快,但是精度准确率不如使用Two stage的模型。 two St…

机器学习之常见的损失函数(loss function)

解决一个机器学习问题主要有两部分:数据和算法。而算法又有三个部分组成:假设函数、损失函数、算法优化。我们一般在看算法书或者视频教学时,更多的是去推算或者说参数估计出其假设函数,而往往不太注重损失函数,但是损…

深度学习loss函数理解

机器学习中的范数规则化之L0、L1、L2范数及loss函数 监督机器学习问题无非就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。 最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我…

CE Loss,BCE Loss以及Focal Loss的原理理解

一、交叉熵损失函数(CE Loss,BCE Loss) 最开始理解交叉熵损失函数被自己搞的晕头转向的,最后发现是对随机变量的理解有偏差,不知道有没有读者和我有着一样的困惑,所以在本文开始之前,先介绍一下…

损失函数loss

http://blog.csdn.net/pipisorry/article/details/23538535 监督学习及其目标函数 损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示。 损失函数是经…

机器学习模型中的损失函数loss function

1. 概述 在机器学习算法中,有一个重要的概念就是损失函数(Loss Function)。损失函数的作用就是度量模型的预测值 f ( x ) f\left ( \mathbf{x} \right ) f(x)与真实值 y \mathbf{y} y之间的差异程度的函数,且是一个非负实值函数。…

损失函数(Loss)

如果我们定义了一个机器学习模型,比如一个三层的神经网络,那么就需要使得这个模型能够尽可能拟合所提供的训练数据。但是我们如何评价模型对于数据的拟合是否足够呢?那就需要使用相应的指标来评价它的拟合程度,所使用到的函数就称…

focal loss详解

文章目录 focal loss的整体理解易分辨样本、难分辨样本的含义focal loss的出现过程focal loss 举例说明focal loss的 α \alpha α变体 focal loss的整体理解 focal loss 是一种处理样本分类不均衡的损失函数,它侧重的点是根据样本分辨的难易程度给样本对应的损失添…

深度学习——损失函数(Regression Loss、Classification Loss)

简介 Loss function 损失函数 用于定义单个训练样本与真实值之间的误差 Cost function 代价函数 用于定义单个批次/整个训练集样本与真实值之间的误差 Objective function 目标函数 泛指任意可以被优化的函数 损失函数用于衡量模型所做出的预测离真实值(GT)之间的偏离程度。 …

深度学习中常见的损失函数(L1Loss、L2loss)

损失函数定义 损失函数:衡量模型输出与真实标签的差异。 L1_loss 平均绝对误差(L1 Loss):平均绝对误差(Mean Absolute Error,MAE)是指模型预测值f(x)和真实值y之间距离的平均值,公式如下: 优…

损失函数(loss function)

文章目录 1、什么是损失函数2、为什么要使用损失函数3、损失函数分类1、分类一2、分类二3、分类三3.1基于距离度量的损失函数3.1.1 均方误差损失函数(MSE)3.1.2 L2损失函数3.1.3 L1损失函数3.1.4 Smooth L1损失函数3.1.5 huber损失函数 3.2 基于概率分布…

Focal Loss损失函数(超级详细的解读)

什么是损失函数? 1、什么是损失呢? 在机器学习模型中,对于每一个样本的预测值与真实值的差称为损失。 2、什么是损失函数呢? 显而易见,是一个用来计算损失的函数。它是一个非负实值函数,通常使用L(Y, f(x))来表示。 3、…

损失函数loss大总结

分类任务loss: 二分类交叉熵损失sigmoid_cross_entropy: TensorFlow 接口: tf.losses.sigmoid_cross_entropy(multi_class_labels,logits,weights1.0,label_smoothing0,scopeNone,loss_collectiontf.GraphKeys.LOSSES,reductionReduction.SUM_BY_NONZER…

深度学习基础(三)loss函数

loss函数,即损失函数,是决定网络学习质量的关键。若网络结构不变的前提下,损失函数选择不当会导致模型精度差等后果。若有错误,敬请指正,Thank you! 目录 一、loss函数定义 二、常见的loss算法种类 1.M…

loss函数 激活函数

一、LOSS函数 loss函数指机器学习模型中用于最小化的目标函数,其一般意义是指判别错误的程度,因为我们要提高准确率,也就是降低错误率,所以可以归结为一个最小化损失函数的问题。 具体的,我们假设有一个十分类问题&a…

Loss损失函数

损失函数是将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数,用于衡量预测值与实际值的偏离程度。在机器学习中,损失函数是代价函数的一部分,而代价函数是目标函数的一种类型。 在《神经网络中常…

深度学习之——损失函数(loss)

深度学习中的所有学习算法都必须有一个 最小化或最大化一个函数,称之为损失函数(loss function),或“目标函数”、“代价函数”。损失函数是衡量模型的效果评估。比如:求解一个函数最小点最常用的方法是梯度下降法&…

1_一些文献中的英文解释和用法整理

目录 1、Theorem、Proposition、Lemma和Corollary等的解释与区别 2、论文里的 Preliminaries 究竟是什么意思? (1)Preliminaries是什么? (2)Preliminaries应该写什么内容? (3)…

区分定理(Theorem)、引理(Lemma)、推论(Corollary)等概念

ZZ: http://blog.sina.com.cn/s/blog_a0e53bf70101jwv1.html Theorem:就是定理,比較重要的,簡寫是 Thm。 Lemma:小小的定理,通常是為了證明後面的定理,如果證明的篇幅很長時,可能會把證明拆成幾…