pytorch常用内置loss函数与正则化技术(补充小细节)

文章目录

  • 前言
  • 一、常用损失函数(后面用到了新的会一一补充)
    • 1.1 回归中的损失函数
      • 1.1.1 nn.MSELoss()
        • 示例1:向量-向量
        • 示例2:矩阵--矩阵(维度必须一致才行)
    • 1.2 分类中的损失函数
      • 1.2.1 二分类
        • (1)nn.BCELoss --- 二分类交叉熵损失函数
          • 示例1:向量-向量
          • 示例2:矩阵--矩阵(维度必须一致才行)
        • (2)BCEWithLogitsLoss --- 二分类交叉熵损失函数
          • 示例1:向量-向量
          • 示例2:矩阵--矩阵(维度必须一致才行)
      • 1.2.2 多分类
        • (1)nn.CrossEntropyLoss() --- 多分类交叉熵损失函数
          • 示例:输出矩阵 --- 目标向量
  • 二、正则化技术
  • 总结


前言

本博客主要简要记录一下对pytorch内置损失函数的一些理解和正则化技术在pytorch里面是怎么调用的。

一、常用损失函数(后面用到了新的会一一补充)

1.1 回归中的损失函数

1.1.1 nn.MSELoss()

示例1:向量-向量
import torch
import torch.nn as nn

# 创建一个简单的例子,假设有5个样本
outputs = torch.tensor([[0.9],
                        [0.8],
                        [0.7],
                        [0.6],
                        [0.5]])

# 真实标签,假设每个样本的目标值
targets = torch.tensor([[1],
                        [0.8],
                        [0.6],
                        [0.4],
                        [0.2]], dtype=torch.float32)

# 创建 MSE Loss 实例,默认情况下计算所有数据点的平均损失
criterion_mean = nn.MSELoss()
# 计算损失
loss_mean = criterion_mean(outputs, targets)
print("Mean Loss:", loss_mean.item())

# 设置 reduction 参数为 'sum',计算所有数据点的损失之和
criterion_sum = nn.MSELoss(reduction='sum')
# 计算损失
loss_sum = criterion_sum(outputs, targets)
print("Sum Loss:", loss_sum.item())

# 设置 reduction 参数为 'none',保持每个数据点的单独损失值
criterion_none = nn.MSELoss(reduction='none')
# 计算损失
loss_none = criterion_none(outputs, targets)
print("None Loss:", loss_none)
print("Sum of None Losses:", loss_none.sum())

输出:
在这里插入图片描述

示例2:矩阵–矩阵(维度必须一致才行)

比如在多标签回归中,output就应该是矩阵了,target显然也是矩阵(多标签)
实际上,这段代码中的 inputtarget 都是形状为 (3, 5) 的张量,表示有 3 个样本,每个样本有 5 个输出标签。在均方误差损失函数中,对应位置上的元素会进行相减操作,然后将差的平方求和,最后除以样本数量,得到平均损失。

换句话说,对于每个样本,均方误差损失函数会计算预测值和目标值对应位置上的差的平方,然后对所有位置上的差的平方求和,并求得平均值作为该样本的损失值。然后,对所有样本的损失值再求平均值,得到最终的损失值。

因此,output 是一个标量值,表示所有样本的均方误差损失。

import torch
import torch.nn as nn

loss = nn.MSELoss()
input = torch.randn(3, 5)
target = torch.randn(3, 5)
output = loss(input, target)
print(output)

输出:
在这里插入图片描述
【注】:这种操作适用于多标签输出每个标签都采用同一种类型损失函数。如果采用不同类型损失函数就需要再网络设计层过程中做一些处理了,但是这种方法更加灵活。(后面会专门写篇博客演示这个的-----待更新衔接)

1.2 分类中的损失函数

1.2.1 二分类

(1)nn.BCELoss — 二分类交叉熵损失函数

输出层直接用sigmoid激活函数即可。
nn.BCELoss(二元交叉熵损失)是用于二分类问题的损失函数。它的计算步骤如下:

  1. 将模型的输出视为预测的概率值。对于二分类问题,通常模型的输出是一个单一的概率值,表示正类别的概率。

  2. 将实际的目标标签视为二进制值,其中1表示正类别,0表示负类别。

  3. 对于每个样本,nn.BCELoss会计算预测值与实际标签之间的二元交叉熵损失。损失计算公式如下:
    loss = − 1 N ∑ i = 1 N ( y i log ⁡ ( p

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/620273.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FileZilla一款免费开源的FTP软件,中文正式版 v3.67.0

01 软件介绍 FileZilla 客户端是一个高效且可信的跨平台应用程序,支持 FTP、 FTPS 和 SFTP 协议,其设计宗旨在于为用户提供一个功能丰富且直观的图形界面。此客户端的核心特性包括一个站点管理器,该管理器能有效地存储和管理用户连接详情及登…

webpack5以下的项目,前端引入node的path模块需要额外配置

webpack5以下的项目,前端import * as path from path时需要额外配置,这里以vue.config.js为例 刚开始引入时报错 其实就是在打包前端项目的时候,将path模块替换成 path-browserify 模块,所以还需要安装 path-browserfify 模块 …

【全网玩家注意】Gamma 模拟器上架AppStore,让初代 PlayStation 游戏登陆 iPhone

5 月 11 日,索尼 PlayStation 的免费模拟器 Gamma 上架 iOS 和 iPad应用商店。Gamma 与开发商 Riley Testut 的Delta 模拟器相似,尤其是在界面方面。与 Delta 一样,它允许自定义屏幕控制器皮肤,并支持蓝牙控制器和有线键盘。 它支…

银发经济背后百万亿市场,解析冷门暴利的中老年AI赚钱项目!

最近“银发经济”这个词频繁出现,如果你注意到了抖音被封号的“秀才”以及仍在活跃的“一笑倾城”这两个账号,你就会明白中老年赛道的前景是多么广阔。 《银发经济蓝皮书》数据显示,到目前为止,我国60岁及以上的老年人口已超过2.8…

GNSS地表位移监测仪的工作原理

TH-WY1GNSS地表位移监测仪是一种用于实时监测地表位移变化的仪器设备。它主要利用全球导航卫星系统(GNSS)或全球定位系统(GPS)技术,通过接收卫星信号来测量地表点位的移动变化,从而获取地表点位的精确坐标信息,进而监测地表的水平和垂直位移情…

【软考】UML中的图之活动图

目录 1. 说明2. 图示3. 特性4. 使用方式4.1 对工作流建模4.2 对操作建模 1. 说明 1.Activity Diagram。2.活动图是一种特殊的状态图,它展现了在系统内从一个活动到另一个活动的流程。3.活动图专注于系统的动态视图,它对于系统的功能建模特别重要&#x…

重新定义社交:Facebook的未来愿景与颠覆力量

在当今数字化社会中,Facebook作为全球最大的社交媒体平台,其未来愿景和颠覆力量备受关注。本文将深入探讨Facebook如何重新定义社交,以及其未来发展中的新趋势和影响。 1. 智能化社交体验 Facebook致力于利用人工智能技术提供更智能、个性化…

通配符证书260元

通配符SSL证书是一种特殊的数字证书,可以保护域名以及该域名下的所有子域名。不论是个人开发者还是企业开发者,只需要购买一个通配符SSL证书,就可以为多个子域名提供传输数据加密服务,降低了多子域名网站开发者购买SSL证书的成本。…

基于R语言绘图 | 转录代谢趋势图绘制教程

原文链接:基于R语言绘图 | 转录代谢趋势图绘制教程 本期教程 小杜的生信笔记,自2021年11月开始做的知识分享,主要内容是R语言绘图教程、转录组上游分析、转录组下游分析等内容。凡事在社群同学,可免费获得自2021年11月份至今全部…

css backdrop-filter 实现背景滤镜

官方给出的定义是:backdrop-filter属性允许您将图形效果(如模糊或颜色偏移)应用于元素后面的区域。因为它适用于元素后面的所有内容,所以要查看元素或其背景的效果,需要透明或部分透明。 大致分为以下10种&#xff1a…

高效管理文件技巧:一键利用文件大小,轻松移动到指定文件夹

在日常生活和工作中,我们经常需要管理大量的文件,包括文档、图片、视频等各种类型。然而,手动分类和移动这些文件往往是一项繁琐且耗时的任务。为了提高文件管理的效率,我们可以采用一些高效的管理技巧,比如利用文件大…

海外青云私有云产品种类介绍

青云(QingCloud)是一家领先的云计算服务提供商,其私有云产品系列在海外市场上也备受关注。以下是对海外青云私有云产品种类的科普介绍。 在海外市场中,青云的私有云产品以其高度的灵活性、可扩展性和安全性而著称。这些产品能够满足不同行业、不同规模企…

C++——缺省参数与重载函数

目录 ​前言 一.缺省参数 1.1缺省参数概念 1.2缺省参数分类 注意事项: 二.函数重载 2.1函数重载概念 2.2c支持函数重载原理——命名修饰 前言 本篇文章主要讲述c中有关于缺少参数与函数重载的相关概念与实例,以下是本人拙见,如有错误…

利用matplotlib和KNeighborsClassifier进行机器学习和预测数据

代码: # 声明 # -*- coding: utf-8 -*- """ Created on Mon May 13 12:16:01 2024author: admin """ # 导入库 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np # 下面是两个机器学习的库 from sklea…

文件夹重命名高效批量技巧:轻松实现在文件夹名称左边添加关键字

在日常工作和生活中,我们经常需要对大量的文件夹进行重命名,以便更好地组织和管理文件。然而,手动一个接一个地修改文件夹名称既费时又费力。幸运的是,有一些高效的批量重命名技巧可以帮助我们快速实现这一目标,特别是…

U盘打不开无法使用

我一个U盘通过window无法识别了,属性也打不开; 我这时候通过挂载U盘到我的centos虚拟机上,打开后,将其挂载 如有需要备份其中的文件 fdisk -L blkid mount /dev/sdc4 /UP cp -r /UP /opt/ umout /UP mkfs.xfs -f /dev/sdc4…

AXI Interconnect IP核的连接模式简介

AXI Interconnect IP核内部包含一个 Crossbar IP核,用于在 Slave Interfaces(SI)和 Master Interfaces(MI)之间路由传输。在连接 SI 或 MI 到 Crossbar 的每条路径上,可以选择性地添加一系列 AXI Infrastru…

一图看懂git merge和git rebase的区别!!

一图看懂git merge和git rebase的区别!! Git 是一个非常流行的版本控制系统,它帮助开发者管理代码的不同版本。在 Git 中,merge 和 rebase 是两种常用的将不同分支的更改合并到一起的方法,但它们在处理方式和结果上有…

一篇教你python网页自动化

一篇教你python网页自动化 网页自动化 一篇教你python网页自动化[TOC](网页自动化) 前言一、安装Python?二、安装Selenium库:1.下载WebDriver:2.第二部分:基本网页操作 三、元素定位与操作:图文演示获取选择器写的一个…

百面算法工程师 | 正则优化函数——BN、LN、Dropout

本文给大家带来的百面算法工程师是正则优化函数,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们将总结一些BN、LN、Dropout的相关知识,并提供参考的回答及其理论基础,以…