Pytorch-均方差损失函数和交叉熵损失函数
均方差损失函数mse_loss()与交叉熵损失函数cross_entropy()
1.均方差损失函数mse_loss()
均方差损失函数是预测数据和原始数据对应点误差的平方和的均值。
\]
N为样本个数,y'为预测数值,y为正确数值。
代码实例:
import torch
import torch.nn.functional as F
if __name__ == '__main__':
data=torch.tensor([1.0,3.0])
loss=F.mse_loss(torch.tensor([1.0,1.0]),data)
print(loss)
# [(1-1)^2+(3-1)^2]/2 = 2
data1=torch.tensor([2.0,3.0])
loss=F.mse_loss(torch.tensor([1.0,1.0]),data1)
print(loss)
# [(2-1)^2+(3-1)^2]/2 = 2.5
输出结果
tensor(2.)
tensor(2.5000)
2.交叉熵损失函数cross_entropy():相比mse_loss()梯度更大了,优化更快了
先引入熵的概念,熵是衡量分布是否稳定的一个概念,衡量一个分布的信息熵的计算公式如下:
log默认以2为底
\]
衡量一个分布的信息熵的实例化代码如下:
import torch
if __name__ == '__main__':
# 交叉熵一般用于分类问题,如果下面四个数据代表四个类别的比例,
# 四个类别的比例都相同,这里的熵很高,就不容易判断。
data=torch.tensor([0.25,0.25,0.25,0.25])
# 输出熵
print('data的熵为',-(data*torch.log2(data)).sum())
# 熵越高,越不容易确定
# 第四个类别的比例为0.97,这里的熵也很低,就比较容易确定。
data1=torch.tensor([0.01,0.01,0.01,0.97])
# 输出熵
print('data1的熵为',-(data1*torch.log2(data1)).sum())
# 熵越低,越容易确定
输出结果
data的熵为 tensor(2.)
data1的熵为 tensor(0.2419)
衡量两个分布的交叉熵的计算公式如下:
\]
交叉熵(p,q)=信息熵(p)+相对熵(p|q),相对熵又称为kl散度,散度越小,p分布和q分布就越接近p(i)代表的是正确值q(i)代表的是预测值
交叉熵损失函数经常出现在分类问题中,因为分类问题需要计算各类别的概率,所以交叉熵损失函数经常与sigmoid()和softmax()激活函数搭配使用。
pytorch中cross_entropy()函数的简单使用,
pytorch中cross_entropy()=softmax()+log()+nll_loss()
import torch
import torch.nn.functional as F
if __name__ == '__main__':
x=torch.randn(1,784)
w=torch.randn(10,784)
logits=x@w.t()
# logits.shape=([1,10])
pred=F.softmax(logits,dim=1)
pred_log=torch.log(pred)
print(F.nll_loss(pred_log,torch.tensor([1])))
# cross_entropy(input, target)
print(F.cross_entropy(logits,torch.tensor([1])))
输出结果
tensor(62.0603)
tensor(62.0603)
Pytorch-均方差损失函数和交叉熵损失函数的更多相关文章
- [ch03-02] 交叉熵损失函数
系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 3.2 交叉熵损失函数 交叉熵(Cross Entrop ...
- 深度学习基础5:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测
深度学习基础5:交叉熵损失函数.MSE.CTC损失适用于字识别语音等序列问题.Balanced L1 Loss适用于目标检测 1.交叉熵损失函数 在物理学中,"熵"被用来表示热力学 ...
- 深度学习原理与框架-神经网络结构与原理 1.得分函数 2.SVM损失函数 3.正则化惩罚项 4.softmax交叉熵损失函数 5. 最优化问题(前向传播) 6.batch_size(批量更新权重参数) 7.反向传播
神经网络由各个部分组成 1.得分函数:在进行输出时,对于每一个类别都会输入一个得分值,使用这些得分值可以用来构造出每一个类别的概率值,也可以使用softmax构造类别的概率值,从而构造出loss值, ...
- 关于交叉熵损失函数Cross Entropy Loss
1.说在前面 最近在学习object detection的论文,又遇到交叉熵.高斯混合模型等之类的知识,发现自己没有搞明白这些概念,也从来没有认真总结归纳过,所以觉得自己应该沉下心,对以前的知识做一个 ...
- 【转载】深度学习中softmax交叉熵损失函数的理解
深度学习中softmax交叉熵损失函数的理解 2018-08-11 23:49:43 lilong117194 阅读数 5198更多 分类专栏: Deep learning 版权声明:本文为博主原 ...
- softmax交叉熵损失函数求导
来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福 ...
- 经典的损失函数:交叉熵和MSE
经典的损失函数: ①交叉熵(分类问题):判断一个输出向量和期望向量有多接近.交叉熵刻画了两个概率分布之间的距离,他是分类问题中使用比较广泛的一种损失函数.概率分布刻画了不同事件发生的概率. 熵的定义: ...
- LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)
首先,逻辑回归是一个概率模型,不管x取什么值,最后模型的输出也是固定在(0,1)之间,这样就可以代表x取某个值时y是1的概率 这里边的参数就是θ,我们估计参数的时候常用的就是极大似然估计,为什么呢?可 ...
- BCE和CE交叉熵损失函数的区别
首先需要说明的是PyTorch里面的BCELoss和CrossEntropyLoss都是交叉熵,数学本质上是没有区别的,区别在于应用中的细节. BCE适用于0/1二分类,计算公式就是 " - ...
- 经典损失函数:交叉熵(附tensorflow)
每次都是看了就忘,看了就忘,从今天开始,细节开始,推一遍交叉熵. 我的第一篇CSDN,献给你们(有错欢迎指出啊). 一.什么是交叉熵 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的.给定两 ...
随机推荐
- 2、zookeeper的简单命令
Zookeeper的常用命令本篇不包括权限acl相关以及集群相关,那些要另开篇章.使用的版本是Zookeeper3.4.14,不同版本会有一定的差异性. 节点的存储信息 新增命令 语法:create ...
- Java多线程转账
Java多线程转账 关键词:多线程,Java 以前的一道面试题,要求是使用Java多线程,实现一个转账业务.不考虑数据库,不考虑其他第三方系统.只考虑当前Java程序内各个账户进行转账,保证转账金额正 ...
- c语言中int和char之间的转换实例解析
壹: 经常用到c,积累一些小函数,免得下次还要重新写,极大的提升工作效率啊. 贰: 代码很简单,直接上源码: #include <stdio.h> typedef unsig ...
- 记Okhttp的拦截器导致app崩溃问题
原文: 记Okhttp的拦截器导致app崩溃问题 - Stars-One的杂货小窝 app对接的后台接口,传参需要加密,获取数据需要解密,于是使用了拦截器去实现,然后发现以下问题: 即使在发起请求的那 ...
- java项目打包成jar包
参考,欢迎点击原文:https://www.bilibili.com/video/BV16K411H7Tt?from=search&seid=12445640905127816624(B站) ...
- 编码ascii码,unicode码,utf-8编码
1. ASCII ASCII 只有127个字符,表示英文字母的大小写.数字和一些符号,但由于其他语言用ASCII 编码表示字节不够,例如:常用中文需要两个字节,且不能和ASCII冲突,中国定制了GB2 ...
- 安装npm install报错npm ERR! code ETIMEDOUT npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/webpack-subresource-integrity failed, reason
执行命令:npm run dev 启动前端项目报如下错误,vue-cli-service是Vue一个启动的插件,需要安装 D:\nodejs\npm.cmd run dev > yuntan1h ...
- 自建AXI4的IP核的地址问题
自建AXI4的IP核的地址问题 1.问题概述 在AXI4中,对应的操作通过对对应的寄存器设置来完成.其中的寄存器又分为数据寄存器和地址寄存器.其中,如果只是想要操作数据的话,只需要使用数据寄存器即可. ...
- KingbaseES V8R6集群运维案例之---sys_monitor.sh start启动动态库错误
案例说明: 在KingbaseES V8R6集群部署了postgis后,执行sys_monitor.sh start启动集群时,出现动态库错误,如下图所示: 适用版本: KingbaseES V8R6 ...
- KingbaseES V8R6 集群环境备库不结束旧事务快照将影响主库的vacuum操作
前言 昨天同事遇到了一个有关vacuum的典型问题. V8R6读写分离集群环境,一主多备. 版本:kingbaseesv008r006c004 问题现象: 主库日常巡检发现日志大量记录: waring ...