使用pytorch框架进行神经网络训练时,涉及到分类问题,就需要使用softmax函数,这里以二分类为例,介绍nn.Softmax()函数中,参数的含义。

1. 新建一个2x2大小的张量,一行理解成一个样本经过前面网络计算后的输出(1x2),则batch_size是2。

import numpy as np

import torch

import torch.nn as nn

a = np.array([[1.5, 6.7],[6.8, 3.4]])

b = torch.from_numpy(a)

2. 下面调用nn.Softmax(dim),dim分别为0,1,看看结果是什么样子

f = nn.Softmax(dim = 0)

c = f(b)

结果: tensor([[0.0050, 0.9644], [0.9950, 0.0356]], dtype=torch.float64)

可以发现,是每一列和为1.

f = nn.Softmax(dim = 1)

结果:tensor([[0.0055, 0.9945],  [0.9677, 0.0323]], dtype=torch.float64)

可以发现是每一行和为1

所以,当nn.Softmax的输入是一个二维张量时,其参数dim = 0,是让列之和为1;dim = 1,是让行之和为1。


若nn.Softmax的输入是三维张量时,dim的取值就变成了0,1,2,那又是代表什么意思呢,看下面的例子。

a = np.array([[[1.5, 6.7, 2.4],

[6.8, 3.4, 9.3]],

[[3.1, 6.5, 1.9],

[8.9, 1.2, 2.5]]])

我们把a换成一个三维数组,大小是2x2x3,可以看成是2个2x3大小的输入。

这时,我们定义Softmax函数的dim为0,则结果是:

tensor([[[0.1680, 0.5498, 0.6225],

[0.1091, 0.9002, 0.9989]],

[[0.8320, 0.4502, 0.3775],

[0.8909, 0.0998, 0.0011]]], dtype=torch.float64)

可以发现,0.1680+0.8320 = 1, 0.5498+0.4502 = 1,即dim = 0,是让两个2x3数据的对应位置和为1.

使dim=1,结果是:

tensor([[[0.0050, 0.9644, 0.0010],

[0.9950, 0.0356, 0.9990]],

[[0.0030, 0.9950, 0.3543],

[0.9970, 0.0050, 0.6457]]], dtype=torch.float64)

可以发现,0.0050+0.9950 = 1,0.9644+0.0356 = 1,即dim = 1,是让张量每个2x3数据自己的列之和为1.

使dim=2,就是让张量每个2x3数据自己的行之和为1.

作者:不太聪明的亚子
链接:https://www.jianshu.com/p/3d63f36cc960
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

nn.Softmax(dim) 的理解相关推荐

  1. nn.Softmax(dim=1)(outputs) 与 torch.max(probs, 1)[1]的理解

      已知在模型训练之后,会得出一个outputs,后遇到torch.max(probs, 1)[1]这行代码,不是很清楚它的意思,所以对其进行逐步调试,理清了思路: outputs = model(i ...

  2. 【从零学Python】理解nn.Softmax(dim=1)(outputs) 与 torch.max(probs, 1)[1]

    已知在模型训练之后,会得出一个outputs,后遇到torch.max(probs, 1)[1]这行代码,不是很清楚它的意思,所以对其进行逐步调试,理清了思路: outputs = model(inp ...

  3. pytorch nn.Softmax

    应用 m = nn.Softmax(dim=1) input = torch.randn(2, 3) output = m(input) 概念 API 将多个输出值转换为概率值,范围在[0,1],且概 ...

  4. nn.softmax的参数使用和数据使用

    nn.Softmax ,dim=0 对于二维数组的dim=0时,将每列的每个元素和这一列的自然指数之和进行比, import torch.nn as nn import numpy as np imp ...

  5. nn.Softmax

    nn.Softmax(dim=None) dim: 计算的维度 A dimension along which Softmax will be computed (so every slice alo ...

  6. Pytorch中torch.nn.Softmax的dim参数含义

    自己搞了一晚上终于搞明白了,下文说的很透彻,做个记录,方便以后翻阅 Pytorch中torch.nn.Softmax的dim参数含义

  7. KLD Loss( tf.nn.softmax, torch.nn.functional.softmax, log_softmax, kl_div) 计算技巧(一)

    最近在比较不同模型的性能,发现虽然文献中使用的相同的指标,比如KLD.但是数据的处理方式却存在着差异,这会导致最后的数据并不具有直接可比性. 这里记录下,其中的一些值得记住的细节.主要涉及的API包括 ...

  8. tf.nn.softmax参数详解以及作用

    tf.nn.softmax参数详解以及作用 参考地址:https://zhuanlan.zhihu.com/p/93054123 tf.nn.softmax(logits,axis=None,name ...

  9. 成功解决return tf.nn.softmax(x, axis=axis) TypeError: softmax() got an unexpected keyword argument 'axis

    成功解决return tf.nn.softmax(x, axis=axis) TypeError: softmax() got an unexpected keyword argument 'axis ...

最新文章

  1. CentOS升级gcc到4.8.2以支持C++11标准的方法
  2. mysql数据库断开连接_解决mysql服务器在无操作超时主动断开连接的情况
  3. HEVC/H265 namespace 介绍
  4. 大数据学习笔记45:Sqoop - 数据迁移工具
  5. python 菜品识别_利用百度智能云结合Python体验图像识别(来自qylruirui)
  6. 使用JavaScript重定向URL参数
  7. 2019斯坦福CS224n深度学习自然语言处理笔记(3)反向传播与计算图
  8. linux开机启动服务,Linux开机启动服务
  9. cocos2dx基础篇(10)——编辑框之一CCTextFieldTTF
  10. c语言输出100以内素数用函数,用C语言 输出100以内的素数,
  11. 设计模式的原则和分类 思想模型
  12. 电路中负电源的注意事项
  13. 启动root用户 银河麒麟_麒麟系统使用root权限运行程序
  14. serving inference
  15. 【转】SetThreadLocale解决越南文乱码问题
  16. 笔记随笔(ing):计算机视觉部分
  17. CSS中的表格2️⃣之合并/拆分单元格以及单元格中在存放表格(跨行或者跨列)
  18. 趣链科技李伟:我们高估了区块链五年的价值,也低估了它未来二十年的影响力...
  19. 拼多多新店铺怎么运营?
  20. 网站性能测试:使用Selenium测试网页加载时间

热门文章

  1. 架设局域网升级服务器 用WSUS打补丁
  2. oracle配置文件
  3. 抗去除花指令(一)——花指令基础
  4. MySQL连接查询综合应用
  5. 控件的移动事件和双击事件
  6. p2p传输实时视频流
  7. 125家单位联合完成微生物组实验手册(Microbiome Protocol eBook)第1版
  8. 计算机控制键功能,电脑ctrl键的功能
  9. 查看表之间的关系 需要在eas中的商业分析-扩展报表中心-报表平台下的语义层方案管理...
  10. clusterprolifer gsea 富集分析