背景

在分类中,最常见的设置是一个输入,输出是类数目大小的向量。预测的输入类将是在最后一个网络层中具有最大条目的相应类。在分类任务中,交叉熵损失(交叉熵)是训练这类网络最常见的损失函数。交叉熵损失可以写在下面的方程中。例如,有一个三级cnn.最后一个全连通层的输出()是(3×1)张量.还有一个向量,它的维度相同,它指的是输入的真实标签。

交叉熵

比如说,3个类分别是0、1和2。输入属于0类。如果网络输出()是一个经过合理训练的分类器,则网络输出(Y)类似于(3.8,−0.2,0.45)。这个输入的Ground-truth 向量()是(1,0,0).因此,对于0类的输入,我们有:

交叉熵损失的正式定义如下:i从0到2:

Softmax

Softmax的计算可以用下面的图表所示的Softmax图层来表示。请注意,图中的Softmax层(Z)的输入是上面提到的向量y。

 softmax常用于多分类过程中,它将多个神经元的输出,归一化到( 0, 1) 区间内,因此Softmax的输出可以看成概率,从而来进行多分类。
 

nn.CrossEntropyLoss() in Pytorch

基本上,交叉熵只有一个项。因为在交叉熵损失方程中只剩下ground-truth类的概率:

这里,j对应于地面-真值类.只有当i=j时,才能达到,否则便等于。在下面的脚本中,将torch.nn.CrossEntroyLoss()的结果与手工计算的交叉熵损失结果进行比较。证明了torch.n.CrossEntroyLoss()接收原始网络输出层的输入,这意味着函数中包含了Softmax层的计算。因此,在pytorch网络构建时,不需要在最终的完全连接层之后添加额外的Softmax层。

 

softmax in pytorch的更多相关文章

  1. CTCLoss如何使用

    CTCLoss如何使用 目录 CTCLoss如何使用 什么是CTC 架构介绍 一个简单的例子 CTC计算的推导 总概率\(p(z|x)\) 路径的含义 路径概率\(p(\pi|x)\) 什么是\(\m ...

  2. PyTorch Softmax

    PyTorch provides 2 kinds of Softmax class. The one is applying softmax along a certain dimension. Th ...

  3. 【动手学pytorch】softmax回归

    一.什么是softmax? 有一个数组S,其元素为Si ,那么vi 的softmax值,就是该元素的指数与所有元素指数和的比值.具体公式表示为: softmax回归本质上也是一种对数据的估计 二.交叉 ...

  4. 从头学pytorch(四) softmax回归实现

    FashionMNIST数据集共70000个样本,60000个train,10000个test.共计10种类别. 通过如下方式下载. mnist_train = torchvision.dataset ...

  5. 小白学习之pytorch框架(4)-softmax回归(torch.gather()、torch.argmax()、torch.nn.CrossEntropyLoss())

    学习pytorch路程之动手学深度学习-3.4-3.7 置信度.置信区间参考:https://cloud.tencent.com/developer/news/452418 本人感觉还是挺好理解的 交 ...

  6. DL基础补全计划(二)---Softmax回归及示例(Pytorch,交叉熵损失)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  7. 理解pytorch中的softmax中的dim参数

    import torch import torch.nn.functional as F x1= torch.Tensor( [ [1,2,3,4],[1,3,4,5],[3,4,5,6]]) y11 ...

  8. PyTorch学习笔记——softmax和log_softmax的区别、CrossEntropyLoss() 与 NLLLoss() 的区别、log似然代价函数

    1.softmax 函数 Softmax(x) 也是一个 non-linearity, 但它的特殊之处在于它通常是网络中一次操作. 这是因为它接受了一个实数向量并返回一个概率分布.其定义如下. 定义 ...

  9. pytorch中F.softmax(x1,dim = -1) dim 取值测试及验证

    # -*- coding: utf-8 -*- """ Created on Mon May 27 11:09:52 2019 @author: jiangshan &q ...

随机推荐

  1. Python爬虫之12306-买票器小白源码

    研究不易 import requests import re import urllib.parse import json import datetime from collections impo ...

  2. pythonのdjango 缓存

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...

  3. L2-010 排座位 (25 分) (最短路)

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805066135879680 题目: 布置宴席最微妙的事情,就是给前 ...

  4. PHP常用函数大全500+

    php usleep() //函数延迟代码执行若干微秒. unpack() //函数从二进制字符串对数据进行解包. uniqid() //函数基于以微秒计的当前时间,生成一个唯一的 ID. time_ ...

  5. iOS(12) ANCS链接问题(用Android 9.0设备链接)

    由于iOS系统默认不会为自带的ANCS服务发送广播, 并且使用ANCS的通知订阅功能必须进行配对. 所以我们需要在ios上写自己的代码,让目标设备和iOS进行配对. 配对完成后,监听设备和iOS都可以 ...

  6. C#来操作Word

    创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置图片宽高以及给图片添加标题: 插入表 ...

  7. vue-router路由动态传参query和params的区别

    1.query方式传参和接收参数 //路由 { path: '/detail', //这里不需要参入参数 name: "detail", component: detail//这个 ...

  8. jQuery时间轴插件timeline.js

    http://www.jq22.com/jquery-info13695 http://www.jq22.com/jquery-info13357 简要教程 timeline.js是一款jQuery时 ...

  9. md5加密 bas64加密

    /** * 获取bas64加密的算法 * @param str * @return */ public static String getBase64(String str) { byte[] b = ...

  10. github徽标引入

    官网: https://shields.io/ 示例: ![](https://img.shields.io/badge/language-go-cccfff.svg?style=popout-squ ...