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,献给你们(有错欢迎指出啊). 一.什么是交叉熵 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的.给定两 ...
随机推荐
- Java实现对ES数据的新增,删除,修改,及合并
Java实现对ES数据的新增,删除,修改,及合并 新增数据 代码: @Autowired private RestHighLevelClient client; /** * @description ...
- TimeLine 时间轴 网站 分享 time.graphics - nodejs 10年图
话说20年 弹指一挥间 https://time.graphics/line/682014 nodejs 10年图 https://time.graphics/line/598790 资料 2022, ...
- 市场主流的G-sensor芯片盘点
一 前记 1.简介 随着可穿戴智能硬件的广泛发展,G-sensor成了一个必不可少的器件.梳理,测试和运用这些传感器.是做可穿戴产品必不可少的环节. 二 产品解析 1.ST的G-sensor型号LIS ...
- 浅谈React与SolidJS对于JSX的应用
React将JSX这一概念深入人心.但,并非只有React利用了JSX,VUE.SolidJS等JS库或者框架都使用了JSX这一概念.网上已经有大量关于JSX的概念与形式的讲述文章,不在本文的讨论范围 ...
- 【3D可视化】3D可视化在智慧园区的应用
随着5G运用和新基建政策,构建智慧城市系统成为当下城市管理的热门需求,智慧园区建设的核心是3D可视化平台,利用它可以提高企业园区智能化.3D数字化管理服务水平. 一.智慧园区概念 "3D可视 ...
- View事件机制分析
目录介绍 01.Android中事件分发顺序 1.1 事件分发的对象是谁 1.2 事件分发的本质 1.3 事件在哪些对象间进行传递 1.4 事件分发过程涉及方法 1.5 Android中事件分发顺序 ...
- C# 12 拦截器 Interceptors
拦截器Interceptors是一种可以在编译时以声明方式替换原有应用的方法. 这种替换是通过让Interceptors声明它拦截的调用的源位置来实现的. 您可以使用拦截器作为源生成器的一部分进行修改 ...
- 算法学习笔记【1】| LCA(最近公共祖先)
LCA(最近公共祖先) Part 1:逐步上跳 假设u,v是所求的两点,先把深度大的点逐步上移直到深度相同. 然后两者同时上移,直到第一次遇到相同的点为止. 时间复杂度: O(n)<script ...
- windows系统cmd切换盘符路径命令失效
问题描述:比如当我在C盘想切换到D盘的某个文件夹路径下时 只是输出了那个路径 但是并没有真的切换 这时候需要再多操作一步就会成功了
- 线段树(SegmentTree)
对于数组应用于区间染色实现为On,而线段树是O(logn) 什么是线段树:对于一个二叉树,每一个节点存储的是一个线段或是一个区间相应的信息. 查询 更新 #pragma once #include & ...