均方差损失函数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. Codeforces Round 169 (Div. 2)C. Little Girl and Maximum Sum(差分、贪心)

    目录 题面 链接 题意 题解 代码 总结 题面 链接 C. Little Girl and Maximum Sum 题意 给q个[l,r]将所有这些区间里面的数相加和最大. 可以进行的操作是任意排列数 ...

  2. ConcurrentHashMap的put方法

    使用JDK8 源码: public V put(K key, V value) { return putVal(key, value, false); } /** Implementation for ...

  3. 读书笔记:CSAPP 11章 网络编程

    深入理解计算机系统 第11章 本章代码:Index of /afs/cs/academic/class/15213-f15/www/code/22-netprog2 其中包含本章课本示例代码,测试 T ...

  4. iview 动态表单验证 FormItem prop rules v-show 动态表单校验

    iview 动态表单验证 FormItem prop rules v-show 重点1 用v-show 控制显示隐藏 重点2 prop 指定字段 重点3 :rules 动态指定规则 <div v ...

  5. Obsidian 0.15.9 知识笔记 使用说明

    我感觉这个软件是一个非常好用的软件,经过初步体验. 全局搜索快捷键 Ctrl + Shift + F 打开快速切换快捷键 Ctrl + O 添加标签 #测试标签 反向链接 Obsidian支持反向链接 ...

  6. 瑞云科技荣获全国电子信息行业专精特新“最具创新价值 TOP20”!

    "专精特新",从概念提出到写入政府工作报告走过了十年.这十年来我国促进中小企业发展力度之大.出台政策之密集.含金量之高前所未有,足见走专精特新发展之路深入人心."专精特新 ...

  7. Java CC链全分析

    CC链全称CommonsCollections(Java常用的一个库) 梦的开始CC1 环境部署 JDK版本:jdk8u65 Maven依赖: <dependencies> <!-- ...

  8. 香港Azure/.NET俱乐部第一次聚会纪实 - WPF在金融业的商业价值

    香港Azure/.NET俱乐部第一次聚会于2019年12月29日在香港上环地铁站星巴克举行. 香港Azure/.NET俱乐部的定位是:以商业价值为导向. 基于这个定位,可以推导出如下准则: 面向大型企 ...

  9. mysql where子句 区分 大小写

    解决办法 使用binary关键字,此时就能区分大小写了 SELECT * FROM `tb_test` WHERE BINARY COL_1='abc'

  10. 京东二面:Redis为什么快?我说Redis是纯内存访问的,然后他对我笑了笑。。。。。。

    引言 Redis是一个高性能的开源内存数据库,以其快速的读写速度和丰富的数据结构支持而闻名.作为一个轻量级.灵活的键值存储系统,Redis在各种应用场景下都展现出了惊人的性能优势.无论是作为缓存工具. ...