最直观的数学解释,softmax函数将输入的几个数据,变成0-1且之和为1的数据再输出。
公式如下:
意思是,每个经过缩放的元素经过exp函数后的结果,再除以结果之和。
举例:对一个二维tensor的列作为处理对象,将每一列的数据都处理成和为1的数据。
a = torch.rand(2,3)
print(a)
tensor([[0.4374, 0.0013, 0.7946],
[0.8905, 0.0954, 0.6671]])
这是创建了一个2x3的随机矩阵(0-1之间)
tmp = torch.max(a, dim=0, keepdim=True)[0]
# 得到每列的最大值,用于缩放每列的元素,避免溢出.axis=0表示跨行,axis=1表示跨列
print(tmp)
print("tmp.shape:", tmp.shape)
tensor([[0.8905, 0.0954, 0.7946]])
tmp.shape: torch.Size([1, 3])
这里,torch.max()函数有很多个,其中带有dim参数的这一个的返回值是一个tuple类型数据,tuple里面是2个tensor数据类型,第一个记录了每列最大值,第二个记录了每个最大值得索引,在这里我们只要最大值,所以只要返回值tuple里面的第一个;keepdim意思是保留计算完之后维度变为1的那