1、 nn.Softmax(dim)
新建一个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)
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)
发现其中;
让两个2x3数据的对应位置和为1.
dim=1,结果是:
tensor([[[0.0050, 0.9644, 0.0010],
[0.9950, 0.0356, 0.9990]],