pytorch:交叉熵(cross entropy)
1、entropy
entropy中文叫做熵,也叫不确定性,某种程度上也叫惊喜度(measure of surprise)
=
如果p(x)采用0-1分部,那么entropy=1log1=0
而对于entropy越大,即熵越大,越不稳定,惊喜度越高
例
import torch
a=torch.full([4],1/4.)
a*torch.log2(a)
# tensor([-0.5000, -0.5000, -0.5000, -0.5000])
-(a*torch.log2(a)).sum()
#输出 tensor(2.)
输出熵为2,不确定性较大惊喜度就比较高
import torch
a=torch.tensor([0.001,0.001,0.001,0.999])
-(a*torch.log2(a)).sum()
# 输出tensor(0.0313)
此时,输出熵为0.0313,比较小,不确定性小,惊喜度很低。
2、cross entropy
cross entropy有两个分部,H(p,q)=
推导成
其中,后半部分是KL Divergent,真正衡量两个分部距离的关系。如果,p和q相似度较低,则比较大,如果p和q完全相似,则接近于0。
所以有结论,p=q时,H(p,q)=H(p)即cross entropy=entropy
当采用0-1分布时,H(p)=0,刚好优化
举例说明
而当我们得到的模型概率q(x)变化时,得到以下结果。
3、为什么不用MSE?
原因:(1)当使用sigmoid+MSE时,很容易使sigmoid出现饱和的情况,出现梯度弥散。
(2)梯度信息小,收敛慢
(3)但是偶尔cross entropy不行的时候,可以考虑MSE
4、总结
一个神经网络的流程
python中cross entropy()=softmax()+log+null_loss()
代码过程
import torch
import torch.nn.functional as F
x=torch.randn(1,784)
w=torch.randn(10,784)
logits=x@w.t() # x和w矩阵相乘加上b得到logits
pred=F.softmax(logits,dim=1) # 经过softmax得到一个pred
pred_log=torch.log(pred) # 进行log操作,得到log(pred)
F.cross_entropy(logits,torch.tensor([3])) # 使用cross entropy 第一项必须是logits,因为cross entropy内有softmax
# python中cross entropy()=softmax()+log+null_loss()
#输出tensor(2.9087)
F.nll_loss(pred_log,torch.tensor([3]))
#输出tensor(2.9087)
pytorch:交叉熵(cross entropy)相关推荐
- 平均符号熵的计算公式_交叉熵(Cross Entropy)从原理到代码解读
交叉熵(Cross Entropy)是Shannon(香浓)信息论中的一个概念,在深度学习领域中解决分类问题时常用它作为损失函数. 原理部分:要想搞懂交叉熵需要先清楚一些概念,顺序如下:==1.自信息 ...
- 机器学习中交叉熵cross entropy是什么,怎么计算?
项目背景:人体动作识别(分类),CNN或者RNN网络,softmax分类输出,输出为one-hot型标签. loss可以理解为预测输出pred与实际输出Y之间的差距,其中pred和Y均为one-hot ...
- 交叉熵(cross entropy)概念整理
网上写得实在是太乱,整理下: 交叉熵函数: H(p,q)=Ep[−logq]=−∑x∈χp(x)logq(x)①H(p,q)=E_p[-log\ q]=-\sum_{x\in \chi}p(x)log ...
- Pytorch交叉熵损失函数torch.nn.functional as F
loss = F.cross_entropy(outputs, labels)
- 【Pytorch神经网络理论篇】 21 信息熵与互信息:联合熵+条件熵+交叉熵+相对熵/KL散度/信息散度+JS散度
1 信息熵 熵 (Entropy),信息熵:常被用来作为一个系统的信息含量的量化指标,从而可以进一步用来作为系统方程优化的目标或者参数选择的判据. 1.1 信息熵的性质 单调性,发生概率越高的事件,其 ...
- dice系数 交叉熵_一文搞懂交叉熵损失
本文从信息论和最大似然估计得角度推导交叉熵作为分类损失函数的依据. 从熵来看交叉熵损失 信息量 信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小. 设\(X ...
- 交叉熵损失函数python_交叉熵损失函数nn.CrossEntropyLoss()
nn.CrossEntropyLoss() 1.引言 在使用pytorch深度学习框架做多分类时,计算损失函数通常会使用交叉熵损失函数nn.CrossEntropyLoss() 2. 信息量和熵 信息 ...
- 熵,交叉熵,KL散度公式与计算实例 (转载学习)
交叉熵(Cross Entropy)和KL散度(Kullback–Leibler Divergence)是机器学习中极其常用的两个指标,用来衡量两个概率分布的相似度,常被作为Loss Function ...
- matlab计算kl散度命令,熵,交叉熵,KL散度公式与计算实例
交叉熵(Cross Entropy)和KL散度(Kullback–Leibler Divergence)是机器学习中极其常用的两个指标,用来衡量两个概率分布的相似度,常被作为Loss Function ...
- 【数据挖掘】神经网络 后向传播算法( 向后传播误差 | 输出层误差公式 | 隐藏层误差公式 | 单元连接权值更新公式 | 单元偏置更新公式 | 反向传播 | 损失函数 | 误差平方和 | 交叉熵 )
文章目录 I . 向后传播误差 简介 II . 输出层误差计算公式 III . 隐藏层层误差计算公式 IV . 使用误差更新 连接权值 V . 使用误差更新 单元偏置 VI . 反向传播 过程 VII ...
最新文章
- Arduino生成ATmega8的运行程序并下载
- php 多进程设置,php多进程操作的三个实例
- css3-6 表格如何设置样式和定位样式是什么
- 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem C. Equivalent Cards 计算几何
- Windows7 x64在Wampserver上安装memcache
- (七)对Jmeter进行参数化的俩种方式
- 值得拥有的手绘风格画图工具
- 大一新生应该如何学习C语言,书上代码看不懂理解不了怎么办?
- Tomcat8用JDK1.7问题
- EDA实践——基于VHDL的循环八路彩灯设计
- 2021免费注册TK域名使用一年的方法
- 【AI教程】AI科研绘图
- 相似度度量的不同方法
- 用c语言编写文曲星小游戏,这是文曲星里的小游戏,本人用c语言将其编出并添加破纪录功能。...
- PRCS-1016 : Failed to resolve Single Client Access Name
- python re模块_python 正则表达式 (重点) re模块
- 正則表達式基本使用方法简单介绍
- 模型评价指标—F1值
- 更换Ubuntu的更新源方式
- MSRA前端实习面经