torch.nn.Softmax()用法

目前网络上对于softmax讲解只停留在三维空间
在4维空间里,即B,C,H,W维度 关于Softmax不同维度归一化

  1. Softmax(dim=0)
    对第0维度进行归一化,即所有Batch之和为1
import torch
x = torch.arange(12, dtype=torch.float32).reshape(1, 3, 2, 2)
print(x)
y = torch.nn.Softmax(dim=0)(x)
print(y)
tensor([[[[ 0.,  1.],
          [ 2.,  3.]],
         [[ 4.,  5.],
          [ 6.,  7.]],
         [[ 8.,  9.],
          [10., 11.]]]])
tensor([[[[1., 1.],
          [1., 1.]],
         [[1., 1.],
          [1., 1.]],
         [[1., 1.],
          [1., 1.]]]])
 本例中Batch为1 可以理解为其他Batch为0,所以所有每个元素都为1
import torch
x = torch.arange(12, dtype=torch.float32).reshape(2, 3, 1, 2)
print(x)
y = torch.nn.Softmax(dim=0)(x)
print(y)
tensor([[[[ 0.,  1.]],
         [[ 2.,  3.]],
         [[ 4.,  5.]]],
         
        [[[ 6.,  7.]],
         [[ 8.,  9.]],
         [[10., 11.]]]])
tensor([[[[0.0025, 0.0025]],
         [[0.0025, 0.0025]],
         [[0.0025, 0.0025]]],

        [[[0.9975, 0.9975]],
         [[0.9975, 0.9975]],
         [[0.9975, 0.9975]]]])
Batch为2,对于每个Batch对应元素和为 1 归一化
  1. softmax(dim=1)
    对第二个维度进行归一化,即对Channel进行归一化
import torch
x = torch.arange(12, dtype=torch.float32).reshape(1, 3, 2, 2)
print(x)
y = torch.nn.Softmax(dim=1)(x)
print(y)

tensor([[[[ 0.,  1.],
          [ 2.,  3.]],
         [[ 4.,  5.],
          [ 6.,  7.]],
         [[ 8.,  9.],
          [10., 11.]]]])
tensor([[[[3.2932e-04, 3.2932e-04],
          [3.2932e-04, 3.2932e-04]],
         [[1.7980e-02, 1.7980e-02],
          [1.7980e-02, 1.7980e-02]],
         [[9.8169e-01, 9.8169e-01],
          [9.8169e-01, 9.8169e-01]]]])
共有3个通道,对于每个通道中对应位置归一化,如0,4,8------1/(1+e^4+e^8) = 3.2932e-0.4 
import torch
x = torch.arange(12, dtype=torch.float32).reshape(1, 3, 2, 2)
print(x)
y = torch.nn.Softmax(dim=2)(x)
print(y)

  1. softmax(dim = 2 / 3 / -1)
tensor([[[[ 0.,  1.],
          [ 2.,  3.]],
         [[ 4.,  5.],
          [ 6.,  7.]],
         [[ 8.,  9.],
          [10., 11.]]]])
tensor([[[[0.1192, 0.1192],
          [0.8808, 0.8808]],
         [[0.1192, 0.1192],
          [0.8808, 0.8808]],
         [[0.1192, 0.1192],
          [0.8808, 0.8808]]]])
dim=2 这个时候对应着H--每个Batch中每个通道的所有行进行归一化 0,2  或者4,6
同理 dim = 3 对应着W--每个Batch中每个通道的所有列进行归一化 0,1  或者4,5
dim = -1对应着最后一个维度 即dim=3
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lins H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值