均方差损失函数mse_loss()与交叉熵损失函数cross_entropy()

1.均方差损失函数mse_loss()

均方差损失函数是预测数据和原始数据对应点误差的平方和的均值。

\[MSE=\frac{1}{N}( y^`−y)^2
\]

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为底

\[Entropy(p)=-\sum_{i=1}^{n} p(i)log p(i)
\]

衡量一个分布的信息熵的实例化代码如下:

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)

衡量两个分布的交叉熵的计算公式如下:

\[Entropy(p,q)=-\sum_{i=1}^{n} p(i)log q(i)=Entropy(p)+D_{kl}(p|q)
\]

交叉熵(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-均方差损失函数和交叉熵损失函数的更多相关文章

  1. [ch03-02] 交叉熵损失函数

    系列博客,原文在笔者所维护的github上:https://aka.ms/beginnerAI, 点击star加星不要吝啬,星越多笔者越努力. 3.2 交叉熵损失函数 交叉熵(Cross Entrop ...

  2. 深度学习基础5:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测

    深度学习基础5:交叉熵损失函数.MSE.CTC损失适用于字识别语音等序列问题.Balanced L1 Loss适用于目标检测 1.交叉熵损失函数 在物理学中,"熵"被用来表示热力学 ...

  3. 深度学习原理与框架-神经网络结构与原理 1.得分函数 2.SVM损失函数 3.正则化惩罚项 4.softmax交叉熵损失函数 5. 最优化问题(前向传播) 6.batch_size(批量更新权重参数) 7.反向传播

    神经网络由各个部分组成 1.得分函数:在进行输出时,对于每一个类别都会输入一个得分值,使用这些得分值可以用来构造出每一个类别的概率值,也可以使用softmax构造类别的概率值,从而构造出loss值, ...

  4. 关于交叉熵损失函数Cross Entropy Loss

    1.说在前面 最近在学习object detection的论文,又遇到交叉熵.高斯混合模型等之类的知识,发现自己没有搞明白这些概念,也从来没有认真总结归纳过,所以觉得自己应该沉下心,对以前的知识做一个 ...

  5. 【转载】深度学习中softmax交叉熵损失函数的理解

    深度学习中softmax交叉熵损失函数的理解 2018-08-11 23:49:43 lilong117194 阅读数 5198更多 分类专栏: Deep learning   版权声明:本文为博主原 ...

  6. softmax交叉熵损失函数求导

    来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福 ...

  7. 经典的损失函数:交叉熵和MSE

    经典的损失函数: ①交叉熵(分类问题):判断一个输出向量和期望向量有多接近.交叉熵刻画了两个概率分布之间的距离,他是分类问题中使用比较广泛的一种损失函数.概率分布刻画了不同事件发生的概率. 熵的定义: ...

  8. LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)

    首先,逻辑回归是一个概率模型,不管x取什么值,最后模型的输出也是固定在(0,1)之间,这样就可以代表x取某个值时y是1的概率 这里边的参数就是θ,我们估计参数的时候常用的就是极大似然估计,为什么呢?可 ...

  9. BCE和CE交叉熵损失函数的区别

    首先需要说明的是PyTorch里面的BCELoss和CrossEntropyLoss都是交叉熵,数学本质上是没有区别的,区别在于应用中的细节. BCE适用于0/1二分类,计算公式就是 " - ...

  10. 经典损失函数:交叉熵(附tensorflow)

    每次都是看了就忘,看了就忘,从今天开始,细节开始,推一遍交叉熵. 我的第一篇CSDN,献给你们(有错欢迎指出啊). 一.什么是交叉熵 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的.给定两 ...

随机推荐

  1. 2、zookeeper的简单命令

    Zookeeper的常用命令本篇不包括权限acl相关以及集群相关,那些要另开篇章.使用的版本是Zookeeper3.4.14,不同版本会有一定的差异性. 节点的存储信息 新增命令 语法:create ...

  2. Java多线程转账

    Java多线程转账 关键词:多线程,Java 以前的一道面试题,要求是使用Java多线程,实现一个转账业务.不考虑数据库,不考虑其他第三方系统.只考虑当前Java程序内各个账户进行转账,保证转账金额正 ...

  3. c语言中int和char之间的转换实例解析

    壹:     经常用到c,积累一些小函数,免得下次还要重新写,极大的提升工作效率啊. 贰:    代码很简单,直接上源码: #include <stdio.h> typedef unsig ...

  4. 记Okhttp的拦截器导致app崩溃问题

    原文: 记Okhttp的拦截器导致app崩溃问题 - Stars-One的杂货小窝 app对接的后台接口,传参需要加密,获取数据需要解密,于是使用了拦截器去实现,然后发现以下问题: 即使在发起请求的那 ...

  5. java项目打包成jar包

    参考,欢迎点击原文:https://www.bilibili.com/video/BV16K411H7Tt?from=search&seid=12445640905127816624(B站) ...

  6. 编码ascii码,unicode码,utf-8编码

    1. ASCII ASCII 只有127个字符,表示英文字母的大小写.数字和一些符号,但由于其他语言用ASCII 编码表示字节不够,例如:常用中文需要两个字节,且不能和ASCII冲突,中国定制了GB2 ...

  7. 安装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 ...

  8. 自建AXI4的IP核的地址问题

    自建AXI4的IP核的地址问题 1.问题概述 在AXI4中,对应的操作通过对对应的寄存器设置来完成.其中的寄存器又分为数据寄存器和地址寄存器.其中,如果只是想要操作数据的话,只需要使用数据寄存器即可. ...

  9. KingbaseES V8R6集群运维案例之---sys_monitor.sh start启动动态库错误

    案例说明: 在KingbaseES V8R6集群部署了postgis后,执行sys_monitor.sh start启动集群时,出现动态库错误,如下图所示: 适用版本: KingbaseES V8R6 ...

  10. KingbaseES V8R6 集群环境备库不结束旧事务快照将影响主库的vacuum操作

    前言 昨天同事遇到了一个有关vacuum的典型问题. V8R6读写分离集群环境,一主多备. 版本:kingbaseesv008r006c004 问题现象: 主库日常巡检发现日志大量记录: waring ...