只需要最后一层为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相关推荐

  1. C#调用存储过程带输出参数或返回值分类(转)

    C#调用存储过程带输出参数或返回值 分类: Asp.net MSSQL2014-05-26 14:02 330人阅读 评论(0) 收藏 举报 [csharp] view plaincopyprint? ...

  2. 【.net core 通过NPOI库将Excel文件内容分类输出到不同的Excel中】

    前言 由于在文章[.net core 通过miniexcel库将Excel文件内容分类输出到不同的Excel中]中实现的Excel内容分类不能够保留原来的文件头格式,所以使用NPOI进行优化.NPOI ...

  3. 神经网络为什么可以实现分类?---三分类网络0,1,2与弹性振子力学系统

    本文制作了一个三分类的网络来分类mnist数据集的0,1,2.并同时制作了一个力学模型,用来模拟这个三分类的过程,并用这个模型解释分类的原理. 上图可以用下列方程描述 只要ωx0,ωx1,ωx2,ωx ...

  4. smartforms不输出0

    金额为零的时候不要输出 0.00 ,置空即可

  5. 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} ...

  6. 比较两个字符串s1和s2的大小,如果s1s2,则输出一个正数;若s1=s2,则输出0;若s1小于s2,则输出一个负数。要求:不用strcpy函数;两个字符串用gets函数读入。

    题目描述 比较两个字符串s1和s2的大小,如果s1>s2,则输出一个正数:若s1=s2,则输出0:若s1<s2,则输出一个负数.要求:不用strcpy函数:两个字符串用gets函数读入.例 ...

  7. FME进阶视频教程: FME使用技巧之高级扇出,讲解在FME中输出数据的高级方式,满足数据个性化分类输出的需求

    教程简介 FME是一套将不同GIS数据模型和要素进行整合处理的强大软件软件,可用于读写存储和转换各种空间数据.FME支持超过300种数据格式的读写,满足日常办公.测绘.地理信息等方面的数据读写.处理需 ...

  8. 自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比。

    自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比. 参考运行截图: ...

  9. C 语言 某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找

    某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找.已知华氏和摄氏温度的转换公式为:C = 5 / 9 X (F - 32) ...

最新文章

  1. yii2 模型中set_Day184:人脸识别中open-set与close-set
  2. 别扭翻译之decentralization
  3. 测试你C语言水平的十道题,挑战一下?
  4. R语言seqm_R语言seq()函数用法
  5. python项目选择背景_Python - - 项目实战 - - 游戏背景
  6. [原][osg]Geometry详解
  7. 固定dll的加载基址的方法
  8. 设某一机器由n个部件组成_干货 | 带你了解!工业机器人知识大全
  9. 计算机硬件及软件组成,计算机的组成及功能(硬件及操作系统)
  10. java 代码练习题_99个java练习题及答案
  11. 高德地图实现的数据统计切换街景地图
  12. 华硕天选2和华硕天选3哪个好 华硕天选2和华硕天选3区别
  13. css实现人走路效果,纯css实现机器人走路动画
  14. PCB设计:传输线模型理论
  15. imshow 显示图像(Matlab)
  16. crm 公户变私户的问题 班级管理 课程管理 学习记录初始化
  17. 5.5 综合案例1.0-电力采集
  18. Google翻译参数解密(11-11)
  19. Linux下mongodb安装配置教程
  20. ipfs浏览器java实现_Brave浏览器中的IPFS

热门文章

  1. dockerhub 拉取地址_使用docker,进行dockerhub仓库上传镜像,拉取镜像。
  2. Python: 除matplotlib外还有哪些数据可视化库?
  3. Python+OpenCV:Hough圆检测(Hough Circle Transform)
  4. 【React深入】setState的执行机制
  5. Design Pattern: Adapter 模式 - Object Adapter
  6. Hyper-V故障转移群集搭建(1)
  7. Oracle11gr2新增APPEND_VALUES提示
  8. windows下批量换程序——运维常用
  9. 网站直达上线运营,API接口开发中
  10. WCF与ASMX Web服务差异比较[译]