softmax in pytorch
背景
在分类中,最常见的设置是一个输入,输出是类数目大小的向量。预测的输入类将是在最后一个网络层中具有最大条目的相应类。在分类任务中,交叉熵损失(交叉熵)是训练这类网络最常见的损失函数。交叉熵损失可以写在下面的方程中。例如,有一个三级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。
nn.CrossEntropyLoss() in Pytorch
基本上,交叉熵只有一个项。因为在交叉熵损失方程中只剩下ground-truth类的概率:

这里,j对应于地面-真值类.只有当i=j时,才能达到
,否则便等于
。在下面的脚本中,将torch.nn.CrossEntroyLoss()的结果与手工计算的交叉熵损失结果进行比较。证明了torch.n.CrossEntroyLoss()接收原始网络输出层的输入,这意味着函数中包含了Softmax层的计算。因此,在pytorch网络构建时,不需要在最终的完全连接层之后添加额外的Softmax层。
softmax in pytorch的更多相关文章
- CTCLoss如何使用
CTCLoss如何使用 目录 CTCLoss如何使用 什么是CTC 架构介绍 一个简单的例子 CTC计算的推导 总概率\(p(z|x)\) 路径的含义 路径概率\(p(\pi|x)\) 什么是\(\m ...
- PyTorch Softmax
PyTorch provides 2 kinds of Softmax class. The one is applying softmax along a certain dimension. Th ...
- 【动手学pytorch】softmax回归
一.什么是softmax? 有一个数组S,其元素为Si ,那么vi 的softmax值,就是该元素的指数与所有元素指数和的比值.具体公式表示为: softmax回归本质上也是一种对数据的估计 二.交叉 ...
- 从头学pytorch(四) softmax回归实现
FashionMNIST数据集共70000个样本,60000个train,10000个test.共计10种类别. 通过如下方式下载. mnist_train = torchvision.dataset ...
- 小白学习之pytorch框架(4)-softmax回归(torch.gather()、torch.argmax()、torch.nn.CrossEntropyLoss())
学习pytorch路程之动手学深度学习-3.4-3.7 置信度.置信区间参考:https://cloud.tencent.com/developer/news/452418 本人感觉还是挺好理解的 交 ...
- DL基础补全计划(二)---Softmax回归及示例(Pytorch,交叉熵损失)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 理解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 ...
- PyTorch学习笔记——softmax和log_softmax的区别、CrossEntropyLoss() 与 NLLLoss() 的区别、log似然代价函数
1.softmax 函数 Softmax(x) 也是一个 non-linearity, 但它的特殊之处在于它通常是网络中一次操作. 这是因为它接受了一个实数向量并返回一个概率分布.其定义如下. 定义 ...
- pytorch中F.softmax(x1,dim = -1) dim 取值测试及验证
# -*- coding: utf-8 -*- """ Created on Mon May 27 11:09:52 2019 @author: jiangshan &q ...
随机推荐
- Python爬虫之12306-买票器小白源码
研究不易 import requests import re import urllib.parse import json import datetime from collections impo ...
- pythonのdjango 缓存
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...
- L2-010 排座位 (25 分) (最短路)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805066135879680 题目: 布置宴席最微妙的事情,就是给前 ...
- PHP常用函数大全500+
php usleep() //函数延迟代码执行若干微秒. unpack() //函数从二进制字符串对数据进行解包. uniqid() //函数基于以微秒计的当前时间,生成一个唯一的 ID. time_ ...
- iOS(12) ANCS链接问题(用Android 9.0设备链接)
由于iOS系统默认不会为自带的ANCS服务发送广播, 并且使用ANCS的通知订阅功能必须进行配对. 所以我们需要在ios上写自己的代码,让目标设备和iOS进行配对. 配对完成后,监听设备和iOS都可以 ...
- C#来操作Word
创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置图片宽高以及给图片添加标题: 插入表 ...
- vue-router路由动态传参query和params的区别
1.query方式传参和接收参数 //路由 { path: '/detail', //这里不需要参入参数 name: "detail", component: detail//这个 ...
- jQuery时间轴插件timeline.js
http://www.jq22.com/jquery-info13695 http://www.jq22.com/jquery-info13357 简要教程 timeline.js是一款jQuery时 ...
- md5加密 bas64加密
/** * 获取bas64加密的算法 * @param str * @return */ public static String getBase64(String str) { byte[] b = ...
- github徽标引入
官网: https://shields.io/ 示例: ![](https://img.shields.io/badge/language-go-cccfff.svg?style=popout-squ ...