【学习】torch.nn.CrossEntropyLoss交叉熵损失函数

交叉熵损失函数torch.nn.CrossEntropyLoss

交叉熵主要是用来判定实际的输出与期望的输出的接近程度,为什么这么说呢,举个例子:

  • 在做分类的训练的时候,如果一个样本属于第K类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即[0,0,1,0,….0,0],这个数组也就是样本的Label,是神经网络最期望的输出结果。也就是说用它来衡量网络的输出与标签的差异,利用这种差异经过反向传播去更新网络参数。

损失函数计算原理

交叉熵损失,是分类任务中最常用的一个损失函数。在Pytorch中是基于下面的公式实现的。
在这里插入图片描述
其中x 是真实标签, x ^是预测值。
取单个样本举例, 假设x = [ 0 , 1 , 0 ] , 模型预测样本x ^的概率为[ 0.1 , 0.5 , 0.4 ] 。(因为是分布, 所以属于各个类的和为1)。则样本的损失计算如下所示:
在这里插入图片描述

需要注意的点:

  • torch.nn.CrossEntropyLoss(input,target)中的标签target使用的是类别的序号,而不是one-hot形式。
    假设现在共有5个候选类别,当前标签是第三个。故类别序号如:2,(下标从0开始),而one-hot编码表示为:[0,0,1,0,0]

    在torch中,输入的target只需要是类别序号即可,torch.nn.CrossEntropyLoss(input,target)会自动进行one-hot编码。这是因为在target中只会有一个类别为真,最终得到loss也只是会和真的这个类别相乘,故自动编码很容易。

  • torch.nn.CrossEntropyLoss(input, target)的input是没有归一化的每个类的得分,而不是softmax之后的分布。即input是直接模型的输出即可,不需要进行softmax操作。
    对于推理阶段,需要使用torch.argmax() 或者softmax等函数来找出概率最大的类别。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支持国密的 Web 服务器

目录 前言编译 Nginx-with-GmSSLv3安装编译依赖的包下载源码编译代码配置与运行数字证书的生成与配置Nginx配置文件修改运行 Nginx-with-GmSSLv3测试Nginx小结前言 在上一章ARM 架构下国密算法库中,介绍了在银河麒麟系统 ARM 架构下编译国密库 GmSSL,在本章中,我将介绍集成…

96、C++ 性能优化一览

在对 C++ 版本的 resnet50 经过大约 5 个版本的优化之后,性能也基本达到了预期。至少利用手写的 resnet50 在 CPU 上推理一张图片感觉不到卡顿了。 下面对这几个版本的性能优化做一个总结。 初始版本1 第一版本的 C++ 代码,并没有考虑性能问题,仅仅是想按照手写 resnet50 …

操作系统原理与实验——实验四短进程优先调度

实验指南 运行环境: Dev c 算法思想: 短进程优先 (SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成 核心数据结构: typedef struct data{ int hour; int…

Docker镜像操作介绍

一、镜像操作 镜像的操作可分为: 拉取镜像:拉取远程仓库的镜像到本地 docker pull重命名镜像:使用docker tag 命令重命名镜像查看镜像:使用docker image ls 或者 docker images命令查看本地已经存在的镜像删除镜像:删…

蓝桥杯倒计时 38 天

整数二分模板&#xff1a;数的范围 二分的本质不是单调性&#xff0c;而是二分出能满足某种性质使得将整数分成两半。 思考&#xff1a;模板题&#xff0c;模板记熟就能做 #include<iostream> using namespace std; int n,q; const int N 1e510; int a[N]; int main…

Jenkins 将shell脚本启动方式修改为bash

platform"arm x86" if [[ "$platform" ~ "arm" ]] thenecho "arm" fi最近在调试Jenkins实现的一些功能&#xff0c;发现在本地可以运行的脚本内容到了Jenkins里面就没办法运行了&#xff0c;不是提示unexpected operator就是提示[[ : …

Python 系统学习总结(基础语法+函数+数据容器+文件+异常+包+面向对象)

&#x1f525;博客主页&#xff1a; A_SHOWY&#x1f3a5;系列专栏&#xff1a;力扣刷题总结录 数据结构 云计算 数字图像处理 力扣每日一题_ 六天时间系统学习Python基础总结&#xff0c;目前不包括可视化部分&#xff0c;其他部分基本齐全&#xff0c;总结记录&#xff0…

网络编程 24/3/6 作业

1、数据库的增删改 #include <myhead.h> int main(int argc, const char *argv[]) {//定义数据库句柄指针sqlite3 *kdbNULL;//打开数据库&#xff0c;不存在则创建if(sqlite3_open("./my.db",&kdb)!SQLITE_OK){printf("sqlite3_open error\n");…

Golang-如何优雅的关闭一个Channel?

如何优雅的关闭Channel 这部分主要参考自&#xff1a;https://qcrao91.gitbook.io/go/channel/ru-he-you-ya-di-guan-bi-channel 直接关闭存在的问题 主要就是上述“向已关闭的Channel收发&#xff0c;会如何&#xff1f;”中所提到的情况&#xff1a; 1、向已关闭的channel…

全连接神经网络算法原理(激活函数、前向传播、梯度下降法、损失函数、反向传播)

文章目录 前言1、全连接神经网络的整体结构&#xff1a;全连接神经网络模型是由输入层、隐藏层、输出层所组成&#xff0c;全连接神经网络结构如下图所示&#xff1a;全连接神经网络的每一层都是由一个一个的神经元所组成的&#xff0c;因此只要搞清楚神经元的本质就可以搞清楚…

算法竞赛基础:树状数组

算法竞赛基础&#xff1a;树状数组 是什么&#xff1f; 树状数组虽然语义上是树状&#xff0c;但是实际上还是一个数组。 树状数组的功能就是单点和区间的修改和查询。 例如&#xff0c;如果想增加一个点的值&#xff0c;那么你需要让其上方所有能对齐的树状数组c全部增加相同…

java设计模式课后作业(待批改)

此文章仅记录学习&#xff0c;欢迎各位大佬探讨 实验&#xff08;一&#xff09; 面向对象设计 实验目的 ①使用类来封装对象的属性和功能&#xff1b; ②掌握类变量与实例变量&#xff0c;以及类方法与实例方法的区别&#xff1b; 知识回顾 详情见OOP课件 实验内容…

QChart柱状图

//柱状图// 创建柱状图数据QBarSet *set0 new QBarSet("");*set0 << 1601 << 974 << 655 << 362;QBarSeries *series new QBarSeries();series->append(set0);set0->setColor(QColor("#F5834B"));// 创建柱状图QChart *ch…

github双因子认证

最近换了个安卓手机&#xff0c;打算让之前的苹果手机退役了&#xff0c;所以需要重新搞GitHub的Two-factor authentication 步骤如下&#xff1a; 1. 访问安全中心 https://github.com/settings/security 2. 点击Authenticator app右侧按钮 3. 下载腾讯身份验证器&#xff…

MySQL作业题

一、取得每个部门最高薪水的人员名称 第一步&#xff1a;取得每个部门的最高薪水 select e.deptno, max(e.sal) as maxSal from emp e group by e.deptno; ----------------- | deptno | maxSal | ----------------- | 20 | 3000.00 | | 30 | 2850.00 | | 10 | 5…

CSS常见布局方式

一、静态布局&#xff08;Static Layout&#xff09; 既传统web设计 就是不管浏览器尺寸多少&#xff0c;网页布局就按当时写代码的布局来布置; 块级元素&#xff1a;每个块级元素会在上一个元素下面另起一行&#xff0c;他们会被设置好的margin分离。块级元素是垂直组织的。 …

进程和线程的创建过程

进程和线程的创建过程是不同的,具体如下: 进程的创建过程: 进程的创建过程涉及到写时复制(Copy-on-Write,COW)机制。写时复制是一种可以延迟甚至避免拷贝数据的内存映射方式。新进程的创建过程大致如下: 操作系统为新进程分配必要的资源,如进程控制块等。父进程的内存数据区…

python跨文件夹调用

如图所示&#xff0c;我们要在bin文件夹下的run_patchcore.py文件中调用src/patchcore文件夹下的backbone.py, common.py等文件。如第13行 方法1&#xff1a;将patchcore的上一层目录src添加到环境变量中 run_patchcore.py 文件中写入import sys sys.path.append(/home/rui/P…

苹果群控软件开发必不可少的代码!

在开发苹果群控软件时&#xff0c;编写高质量的代码是至关重要的&#xff0c;这些代码不仅需要实现功能&#xff0c;还需要保证软件的稳定性、安全性和可扩展性&#xff0c;本文将分享四段在苹果群控软件开发中必不可少的源代码&#xff0c;并解释每段代码的作用和实现原理。 一…

HM2019创建分析模型

步骤一&#xff1a;查看单元类类型&#xff08;通过card edit&#xff09;&#xff0c;然后展开模型查看模型信息&#xff1b;步骤二&#xff1a;为材料集里添加新的材料 材料:Al 弹性模量E:70000 泊松比NU:0.33 其中&#xff1a;MAT1表示各向同性材料&#xff0c;E表示弹…