nn.Softmax(dim) 的理解

这篇博客介绍了在PyTorch中使用nn.Softmax()函数处理分类问题时,参数dim的含义。通过示例展示了当dim分别设置为0和1时,如何影响二维张量中行和列的和。进一步解释了对于三维张量,dim取0、1、2时的不同效果,帮助理解Softmax在多维数据上的应用。
摘要由CSDN通过智能技术生成

使用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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值