如何让NN分类输出[0,1]的值,并且相加等于1
只需要最后一层为softmax即可
以lenet5为例
import torch.nn as nn
from collections import OrderedDictclass LeNet5(nn.Module):"""Input - 1x32x32C1 - 6@28x28 (5x5 kernel)tanhS2 - 6@14x14 (2x2 kernel, stride 2) SubsamplingC3 - 16@10x10 (5x5 kernel, complicated shit)tanhS4 - 16@5x5 (2x2 kernel, stride 2) SubsamplingC5 - 120@1x1 (5x5 kernel)F6 - 84tanhF7 - 10 (Output)"""def __init__(self):super(LeNet5, self).__init__()self.convnet = nn.Sequential(OrderedDict([('c1', nn.Conv2d(1, 6, kernel_size=(5, 5))),('relu1', nn.ReLU()),('s2', nn.MaxPool2d(kernel_size=(2, 2), stride=2)),('c3', nn.Conv2d(6, 16, kernel_size=(5, 5))),('relu3', nn.ReLU()),('s4', nn.MaxPool2d(kernel_size=(2, 2), stride=2)),('c5', nn.Conv2d(16, 120, kernel_size=(5, 5))),('relu5', nn.ReLU())]))self.fc = nn.Sequential(OrderedDict([('f6', nn.Linear(120, 84)),('relu6', nn.ReLU()),('f7', nn.Linear(84, 10)),('sig7', nn.Softmax(dim=-1))]))def forward(self, img):output = self.convnet(img)output = output.view(img.size(0), -1)output = self.fc(output)return output
但是大多数会用LogSoftmax, 说是比softmax稳定,
('sig7', nn.LogSoftmax(dim=-1))
这样的话, 我们如何得到[0,1]的结果并且相加为1呢?
参考这里:https://discuss.pytorch.org/t/cnn-results-negative-when-using-log-softmax-and-nll-loss/16839
Since you are using the logarithm on softmax, you will get numbers in [-inf, 0], since log(0)=-inf and log(1)=0. You could get the probabilities back by using torch.exp(output).
我们只需要使用torch.exp来还原即可, 看看还原的结果
tensor([3.6305e-09, 4.1472e-10, 1.7295e-07, 2.2230e-06, 5.6530e-08, 1.1103e-08,2.7662e-14, 9.9999e-01, 3.7742e-07, 5.3025e-06], grad_fn=<ExpBackward>)
如何让NN分类输出[0,1]的值,并且相加等于1相关推荐
- C#调用存储过程带输出参数或返回值分类(转)
C#调用存储过程带输出参数或返回值 分类: Asp.net MSSQL2014-05-26 14:02 330人阅读 评论(0) 收藏 举报 [csharp] view plaincopyprint? ...
- 【.net core 通过NPOI库将Excel文件内容分类输出到不同的Excel中】
前言 由于在文章[.net core 通过miniexcel库将Excel文件内容分类输出到不同的Excel中]中实现的Excel内容分类不能够保留原来的文件头格式,所以使用NPOI进行优化.NPOI ...
- 神经网络为什么可以实现分类?---三分类网络0,1,2与弹性振子力学系统
本文制作了一个三分类的网络来分类mnist数据集的0,1,2.并同时制作了一个力学模型,用来模拟这个三分类的过程,并用这个模型解释分类的原理. 上图可以用下列方程描述 只要ωx0,ωx1,ωx2,ωx ...
- smartforms不输出0
金额为零的时候不要输出 0.00 ,置空即可
- String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}
String.Format数字格式化输出 {0:N2} {0:D2} {0:C2} 数字 {0:N2} 12.36 数字 {0:N0} 13 货币 {0:c2} $12.36 货币 {0:c4} ...
- 比较两个字符串s1和s2的大小,如果s1s2,则输出一个正数;若s1=s2,则输出0;若s1小于s2,则输出一个负数。要求:不用strcpy函数;两个字符串用gets函数读入。
题目描述 比较两个字符串s1和s2的大小,如果s1>s2,则输出一个正数:若s1=s2,则输出0:若s1<s2,则输出一个负数.要求:不用strcpy函数:两个字符串用gets函数读入.例 ...
- FME进阶视频教程: FME使用技巧之高级扇出,讲解在FME中输出数据的高级方式,满足数据个性化分类输出的需求
教程简介 FME是一套将不同GIS数据模型和要素进行整合处理的强大软件软件,可用于读写存储和转换各种空间数据.FME支持超过300种数据格式的读写,满足日常办公.测绘.地理信息等方面的数据读写.处理需 ...
- 自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比。
自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比. 参考运行截图: ...
- C 语言 某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找
某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找.已知华氏和摄氏温度的转换公式为:C = 5 / 9 X (F - 32) ...
最新文章
- yii2 模型中set_Day184:人脸识别中open-set与close-set
- 别扭翻译之decentralization
- 测试你C语言水平的十道题,挑战一下?
- R语言seqm_R语言seq()函数用法
- python项目选择背景_Python - - 项目实战 - - 游戏背景
- [原][osg]Geometry详解
- 固定dll的加载基址的方法
- 设某一机器由n个部件组成_干货 | 带你了解!工业机器人知识大全
- 计算机硬件及软件组成,计算机的组成及功能(硬件及操作系统)
- java 代码练习题_99个java练习题及答案
- 高德地图实现的数据统计切换街景地图
- 华硕天选2和华硕天选3哪个好 华硕天选2和华硕天选3区别
- css实现人走路效果,纯css实现机器人走路动画
- PCB设计:传输线模型理论
- imshow 显示图像(Matlab)
- crm 公户变私户的问题 班级管理 课程管理 学习记录初始化
- 5.5 综合案例1.0-电力采集
- Google翻译参数解密(11-11)
- Linux下mongodb安装配置教程
- ipfs浏览器java实现_Brave浏览器中的IPFS
热门文章
- dockerhub 拉取地址_使用docker,进行dockerhub仓库上传镜像,拉取镜像。
- Python: 除matplotlib外还有哪些数据可视化库?
- Python+OpenCV:Hough圆检测(Hough Circle Transform)
- 【React深入】setState的执行机制
- Design Pattern: Adapter 模式 - Object Adapter
- Hyper-V故障转移群集搭建(1)
- Oracle11gr2新增APPEND_VALUES提示
- windows下批量换程序——运维常用
- 网站直达上线运营,API接口开发中
- WCF与ASMX Web服务差异比较[译]