nn.Softmax(dim) 的理解

这篇具有很好参考价值的文章主要介绍了nn.Softmax(dim) 的理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章来源地址https://www.toymoban.com/news/detail-400264.html

到了这里,关于nn.Softmax(dim) 的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pytorch(6)——神经网络基本骨架nn.module的使用

    torch.nn(Neural network, 神经网络)内包含Pytorch神经网络框架 Containers: 容器 Convolution Layers: 卷积层 Pooling Layers: 池化层 Padding Layers: 填充层 Non-linear Activations (weighted sum, nonlinearity):非线性激活 Non-linear Activations (other):非线性激活 Normalization Layers:归一化层 Recurrent Layers:递归层 Tr

    2024年02月14日
    浏览(30)
  • 学习pytorch7 神经网络的基本骨架--nn,module的使用

    B站小土堆视频学习笔记 https://pytorch.org/docs/stable/generated/torch.nn.Module.html#torch.nn.Module https://www.php.cn/faq/555151.html 前向传播 与之对应的还有反向传播 推荐课程 吴恩达卷积 李宏毅深度学习 cnn 同济子豪兄神经网络 code–Generate–override Methods–init 重写init方法 torch.tensor和torch.Tens

    2024年02月09日
    浏览(24)
  • 关于pytorch中的dim的理解

    今天碰到一个代码看起来很简单,但是细究原理又感觉好像不太通不太对劲,就是多维tensor数据的操作,比如: y.sum(dim=2) ,乍一看很简单数据相加操作,但是仔细一想,这里在第3维度的数据到底是横向相加还是纵向相加,带着疑问实验几次就明白了。 首先给个完整的例子:

    2024年02月04日
    浏览(30)
  • pytorch学习-线性神经网络——softmax回归+损失函数+图片分类数据集

            Softmax回归(Softmax Regression)是一种常见的多分类模型,可以用于将输入变量映射到多个类别的概率分布中。softmax回归是机器学习中非常重要并且经典的模型,虽然叫回归,实际上是一个分类问题         回归是估计一个连续值,分类是预测一个连续的类别  示例

    2024年02月15日
    浏览(37)
  • 【深度学习】基于MindSpore和pytorch的Softmax回归及前馈神经网络

    1 实验内容简介 1.1 实验目的 (1)熟练掌握tensor相关各种操作; (2)掌握广义线性回归模型(logistic模型、sofmax模型)、前馈神经网络模型的原理; (3)熟练掌握基于mindspore和pytorch的广义线性模型与前馈神经网络模型的实现。   1.2 实验内容及要求 请基于mindspore和pytorch平

    2023年04月22日
    浏览(28)
  • Pytorch学习:神经网络模块torch.nn.Module和torch.nn.Sequential

    官方文档:torch.nn.Module CLASS torch.nn.Module(*args, **kwargs) 所有神经网络模块的基类。 您的模型也应该对此类进行子类化。 模块还可以包含其他模块,允许将它们嵌套在树结构中。您可以将子模块分配为常规属性: training(bool) -布尔值表示此模块是处于训练模式还是评估模式。

    2024年02月10日
    浏览(33)
  • 【PyTorch框架】——框架安装&使用流程&搭建PyTorch神经网络气温预测

    目录 一、引言 二、使用流程——最简单例子试手 三、分类任务——气温预测   总结: Torch可以当作是能在GPU中计算的矩阵,就是ndarray的GPU版!TensorFlow和PyTorch可以说是当今最流行的框架!PyTorch用起来简单,好用!而TensoFlow用起来没那么自由!caffe比较老,不可处理文本数据

    2024年02月05日
    浏览(29)
  • 手动以及使用torch.nn实现logistic回归和softmax回归

    其他文章 手动以及使用torch.nn实现logistic回归和softmax回(当前文章) 手动以及使用torch.nn实现前馈神经网络实验 pytorch基本操作考察 动手实现 logistic 回归 (手动 + torch.nn两种方式) 动手实现 softmax 回归 (手动 + torch.nn两种方式) 使用 Tensor 初始化一个 1 x 3 的矩阵 M M M 和一个 2 × 1 的

    2024年02月16日
    浏览(35)
  • 一维卷积神经网络理解(torch.nn.Conv1d)

    in_channels : (int)输入数据的通道数,即对某条训练数据来说由多少组向量表示。例如对于由一维向量表示的一条数据来说,通道数为1;对于文本数据来说,一个句子是由m个单词组成,那么通道数就可以是m out_channels : (int)卷积产生的通道数,可以理解为卷积核的个数 kernel_siz

    2023年04月08日
    浏览(31)
  • 深入理解PyTorch中的nn.Embedding

    太长不看版: NLP任务所依赖的语言数据称为语料库。 详细介绍版: 语料库(Corpus,复数是Corpora)是组织成数据集的真实文本或音频的集合。 此处的真实是指由该语言的母语者制作的文本或音频。 语料库可以由从报纸、小说、食谱、广播到电视节目、电影和推文的所有内容

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包