深度学习02:损失函数总结

news/2025/2/22 22:45:15/

目录

nn.L1Loss:

nn.NLLLoss:

nn.MSELoss:

nn.CrossEntropyLoss:


 

损失函数是用来估量模型的预测值与真实值的不一致程度,它是一个非负实值函数。我们训练模型的过程,就是通过不断的迭代计算,使用梯度下降的优化算法,使得损失函数越来越小。损失函数越小就表示算法达到意义上的最优。

直白来说,就是用它来描述我们模型的鲁棒性,损失函数越小,模型的鲁棒性就越好。

由于我是以学习pytorch入门,所以这里来看看pytorch的内置函数。

nn.L1Loss:

首要条件是x 和 y 的维度要一样(可以是向量或者矩阵),表示输入x和目标y之间差的绝对值,得到的 loss 维度也是对应一样的。

n%5Csum%7Cx_i-y_i%7C

nn.NLLLoss:

用于多分类的负对数似然损失函数

gif.latex?%5Cfn_cm%20loss%28x%2C%20class%29%20%3D%20-x%5Bclass%5D

NLLLoss中如果传递了weights参数,会对损失进行加权,公式就变成了

gif.latex?%5Cfn_cm%20loss%28x%2C%20class%29%20%3D%20-weights%5Bclass%5D%20*%20x%5Bclass%5D                     

nn.MSELoss:

均方损失函数 ,输入x和目标y之间均方差

n%5Csum%28x_i-y_i%29%5E2

nn.CrossEntropyLoss:

多分类用的交叉熵损失函数,LogSoftMax和NLLLoss集成到一个类中,会调用nn.NLLLoss函数,我们可以理解为CrossEntropyLoss()=log_softmax() + NLLLoss()

gif.latex?%5Cfn_cm%20%5Cbegin%7Baligned%7D%20loss%28x%2C%20class%29%26%3D-%5Ctext%7Blog%7D%5Cfrac%7Bexp%28x%5Bclass%5D%29%7D%7B%5Csum_j%20exp%28x%5Bj%5D%29%29%7D%5C%20%26%3D-x%5Bclass%5D%20+%20log%28%5Csum_j%20exp%28x%5Bj%5D%29%29%20%5Cend%7Baligned%7D

因为使用了NLLLoss,所以也可以传入weight参数,这时loss的计算公式变为:

 gif.latex?%5Cfn_cm%20loss%28x%2C%20class%29%20%3D%20weights%5Bclass%5D%20*%20%28-x%5Bclass%5D%20+%20log%28%5Csum_j%20exp%28x%5Bj%5D%29%29%29

所以一般多分类的情况会使用这个损失函数

 


http://www.ppmy.cn/news/6986.html

相关文章

【JavaScript】ES6模块化开发

文章目录一. 模块化的意义二. ES6 模块化讲解定义模块:导入模块:配置模块:HTML页面加载规则一. 模块化的意义 函数编程---->闭包---->命名空间---->模块化编程 模块化的意义–冲突和依赖 模块化思想 就是指将页面根据内容的关联性…

PostgreSQL数据库TableAM——Table scan callbacks

TableAM Table scan TableAM提供了如下4个接口用于实现表数据的扫描功能。scan_begin函数的形参nkeys不为零,则扫描结果需要根据scan keys先进行过滤;pscan如果不为null,说明该结构体已经由parallelscan_initialize初始化过了(仅仅在table_b…

软件设计中最关键的“开闭原则”,究竟指什么呢?

前言 软件设计原则中有一条很关键的原则是开闭原则,就是所谓的对扩展开放,对修改关闭。个人觉得这条原则是非常重要的,直接关系到你的设计是否具备良好的扩展性,但也是相对比较难以理解和掌握的,究竟怎样的代码改动才…

显著性分析

选择图 为什么要分Non-parametric & parametric 方法 为了找到更符合数据的分析方法。每个方法有自己的假设&#xff0c;如果违背了结果会不精准。 Sign Test 是一个可以用于任何数据分布情况的pairwise 方法。 检查normality: Sample 数量 < 50,适用 Shapiro-Wilk&am…

ElasticSearch 数据读写

文章目录一、数据模型1.1 PacificA 算法1.2 ES 数据副本模型1.2.1 写入模型1.2.2 读取模型1.2.3 一致性保障二、ES 数据写入2.1 写入详细流程2.1.1 协调节点流程2.1.2 主分片节点流程三、ES 数据读取3.1 GET 流程3.2 Search 流程四、索引恢复一、数据模型 1.1 PacificA 算法 …

vue2[webpack]中接入vue3[vite]的qiankun微前端服务

本文记录在 vue2[webpack]老项目中&#xff0c;使用qiankun.js微前端服务&#xff0c;接入vue3[vite]新项目。 纯vue2[webpack]技术项目可参考以前的文章&#xff1a; vue项目落地(qiankun.js)微前端服务-zhanghaoran’s blog vue2为基座主应用&#xff1b; vue3为子应用。 改造…

2022年学习机器人和人工智能的一些体会

前些日子开会&#xff0c;很受启发&#xff0c;比如有大佬指出&#xff1a; 总结&#xff1a;一般是高屋建瓴&#xff0c;通常是级别高的总揽全局&#xff0c;小虾虾不适用&#xff1b;感想和体会&#xff1a;小虾虾们学习完大佬讲话之后&#xff0c;自己的收获。 这才发现写博…

K8S——调用亲和性

k8s-调度亲和性 简介 Scheduler 是 kubernetes 的调度器&#xff0c;主要的任务是把定义的 pod 分配到集群的节点上。听起来非常简单&#xff0c;但有 很多要考虑的问题&#xff1a; 公平&#xff1a;如何保证每个节点都能被分配资源资源高效利用&#xff1a;集群所有资源最…