交叉熵

交叉熵主要是用来判定实际的输出与期望的输出的接近程度,其数学公式如下:
                                                                    
但Pytorch中的交叉熵采用了另一种方式,其公式如下:


交叉熵描述了概率分布q对概率分布p估计的准确程度,所以在使用交叉熵损失函数时,通常会设定p代表正确答案,q代表预测的结果值。损失需要一步一步被减小,才能使得预测的答案越来越接近真实的答案。深度学习所涉及到的分类问题常使用交叉熵损失函数。

Softmax

需要注意的是,交叉熵刻画的是两个概率分布(或是概率分布向量)之间的距离,这就要求神经网络的输出要是一个概率分布。那么如何在分类问题中将神经网络前向传播得到的结果变成概率分布提供给交叉熵损失函数进行计算呢?softmax回归就是一种很常用的方法。其公式如下:

pytorch中softmax函数使用如下:

F.softmax(input,dim=0) # 按列SoftMax,列和为1F.softmax(input,dim=1) # 按行SoftMax,行和为1

cross_entropy

 Pytorch中cross_entropy()函数就是将softmax()、log()、nll_loss()三个函数合并到一块得到的结果。

   1、Softmax后的数值都在0~1之间,所以ln之后值域是负无穷到0。

   2、将Softmax之后的结果取log,将乘法改成加法减少计算量,同时保障函数的单调性。注意:在不加说明的情况下,log表示 数学中的自然对数函数ln(以e为底的log函数)

3、nll_loss(negative log likelihood loss)的结果就是把上面的输出与Label对应的那个值拿出来,去掉负号,再求均值

举例说明计算过程:

import torch
import torch.nn.functional as F#设置标签,假设是二分类,一共有4个样本,因此标签维度为1*4
label = torch.Tensor([0,1,1,0]).long()#创建一个形状为4*2(代表一共4个样本,2个类别)的tensor,模拟分类神经网络的输出
#分别进行softmax与log计算,并打印输出结果
a = torch.Tensor([[0.7654,0.0308],[0.7829,0.0386],[0.7779,0.0331],[0.7781,0.0326]])
b = F.softmax(a,dim=1)
c = torch.log(b)print(a)
print(b)
print(c)a= tensor([[0.7654, 0.0308],[0.7829, 0.0386],[0.7779, 0.0331],[0.7781, 0.0326]])b= tensor([[0.6758, 0.3242],[0.6779, 0.3221],[0.6780, 0.3220],[0.6782, 0.3218]])c= tensor([[-0.3918, -1.1264],[-0.3887, -1.1330],[-0.3885, -1.1333],[-0.3883, -1.1338]])#根据上述的标签值,我们选择张量c中对应位置的数值,进行计算
loss = -(-0.3918-1.1330-1.1333-0.3883)/4 = 0.7616

参考文章:https://www.cnblogs.com/marsggbo/p/10401215.html

https://www.jianshu.com/p/6049dbc1b73f

《Tensorflow深度学习算法原理与编程实践》书籍

交叉熵函数cross_entropy与归一化指数函数softmax相关推荐

  1. 通俗理解归一化指数函数—Softmax函数

    在数学,尤其是概率论和相关领域中,归一化指数函数,或称Softmax函数,是逻辑函数的一种推广.它能将一个含任意实数的K维向量z"压缩"到另一个K维实向量σ(z)中,使得每一个元素 ...

  2. 机器学习入门(13)— Affine 仿射层、Softmax 归一化指数函数层实现

    1. 一维 Affine 仿射层 我们回顾下之前为了计算加权信号的总和,使用了矩阵的乘积运算 NumPy 中是 np.dot() , 参照代码如下: In [7]: X = np.random.ran ...

  3. softmax函数到底是什么?——归一化指数函数,及其python实现

    softmax应该算是机器学习的入门数学知识了.softmax函数,它并不十分复杂,但又不是十分简单,总之这个函数就是很难去背诵下来,以致于每次你要写softmax的时候,都得搜一下才行.而每次搜索s ...

  4. 计算机上指数函数的表示方法,归一化指数函数

    在数学,尤其是概率论和相关领域中,归一化指数函数,或称Softmax函数,是逻辑函数的一种推广.它能将一个含任意实数的K维向量z"压缩"到另一个K维实向量σ(z)中,使得每一个元素 ...

  5. PyTorch----Softmax函数与交叉熵函数

    二分类问题和多分类问题 二分类问题: 分类任务中有两个类别.比如前面感知机识别香蕉还是苹果,一般会训练一个分类器,输入一幅图像,输出该图像是苹果的概率为p,对p进行四舍五入,输出结果为0或者1,这就是 ...

  6. Tensorflow四种交叉熵函数计算公式

    Tensorflow交叉熵函数:cross_entropy 注意:tensorflow交叉熵计算函数输入中的logits都不是softmax或sigmoid的输出,而是softmax或sigmoid函 ...

  7. 交叉熵(cross_entropy)作为损失函数在神经网络中的作用

    交叉熵的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点 神经网络解决多分类问题最常用的方法是设置n个输出节点,其中n为类别的个数.对于每一个样例,神经网络可以得到的 ...

  8. [人工智能-深度学习-14]:神经网络基础 - 常见loss损失函数之逻辑分类,对数函数,交叉熵函数

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  9. pytorch的F.cross_entropy交叉熵函数

    F.cross_entropy计算交叉熵损失,代码为: loss=F.cross_entropy(out, y) 其中out是网络输出的概率向量,y是真实标签,注意y是标量.使用这个函数时应该特别注意 ...

最新文章

  1. mongodb学习笔记6--杂项与补充
  2. ajax返回头部页面,ajax getResponseHeader获取中文响应头
  3. 双指针算法之快慢指针(二):力扣【寻找链表的第N个点】leetcode-876、19
  4. mysql分页limit运算,MySQL的limit分页查询及性能问题
  5. python3装饰器例子_python 装饰器(三):装饰器实例(一)
  6. IO多路复用之select全面总结(必看篇)
  7. 【MySQL数据库开发之四】MySQL 处理模式/常用查询/模式匹配等(下)
  8. 学习python这门课的感受_关于我学习了编程小白的第一本Python入门书之后的感受 200110900207...
  9. L1-007 念数字 (10 分)—团体程序设计天梯赛
  10. intel 显卡驱动的节能设置(新版驱动)
  11. html是l面包屑效果,CSS制作面包屑
  12. 分享10个高质量的插画网站
  13. Hadoop官网使用教程
  14. 如何在PADS里加入封装库
  15. 基于javaweb的公寓房屋出租系统(java+ssm+jsp+easyui+echarts+mysql)
  16. 推荐:重启docker容器
  17. 模糊C均值聚类 python实现
  18. 【PytorchLearning】基于 UNet 的肺部影像语义分割案例保姆教程
  19. 虹科分享|太赫兹成像技术的分类与原理
  20. TMS320C6748_UART_EDMA

热门文章

  1. 软件测试人员常用的sql语句(三)
  2. 嵌入式Linux——uevent机制:uevent原理分析
  3. Linux可视化管理工具Cockpit
  4. 吃鸡又一重大更新,只有跑毒才能拯救你
  5. 单号怎么删除,分享批量删除单号的方法
  6. 记第一次C++面试与经验分享
  7. 知识蒸馏Knownledge Distillation
  8. datepick二格式 化时间_bootstrap datetimepicker日期插件超详细使用方法介绍
  9. 基于Arduino的超声波垃圾桶
  10. html修改显示页面内容,html修改iframe内容