【Pytorch】| Pytorch中softmax的dim的详细总结

【Pytorch】| Pytorch中softmax的dim的详细总结

作者:刘兴禄,清华大学博士在读

欢迎关注我们的微信公众号 运小筹

【Pytorch】| Pytorch中softmax的dim的详细总结

; 关于softmax的理解

Softmax的公式为
softmax ( x i ) = e x i ∑ i e x i \text{softmax} (x_i) = \frac{e^{x_i}}{\sum_{i}{e^{x_i}}}softmax (x i ​)=∑i ​e x i ​e x i ​​
因此,其满足下面两个条件:

  1. 0 ⩽ softmax ( x i ) ⩽ 1 0 \leqslant \text{softmax} (x_i)\leqslant 1 0 ⩽softmax (x i ​)⩽1;
  2. ∑ i softmax ( x i ) = 1 \sum_{i} {\text{softmax} (x_i)} =1 ∑i ​softmax (x i ​)=

这个函数是为了实现对输出向量的归一化,将其标准化为概率的形式。

首先看看官方对 tf.nn.functional.softmax(x,dim = -1)的解释:

dim (python:int) – A dimension along which Softmax will be computed (so every slice along dim will sum to 1).

也就是说,在dim的纬度上,加和为1。比如,是对行加和为1,还是列加和为1。

我们来进行测试

一维向量:dim=0和dim=-1结果相同,dim=1和dim=2会报错


a = torch.tensor([1, 2, 3], dtype=float)
soft_max_a = torch.nn.functional.softmax(a, dim = 0)

soft_max_a = torch.nn.functional.softmax(a, dim = -1)

二维张量:dim=1和dim=-1结果相同,dim=2会报错

'''
假设张量为2维张量: a = torch.tensor([[1, 2, 3],
                                    [4, 5, 6]], dtype=float)
'''

a = torch.tensor([[1, 2, 3],[4, 5, 6]], dtype=float)
soft_max_a = torch.nn.functional.softmax(a, dim = 0)
'''
soft_max_a = tensor([[0.0474, 0.0474, 0.0474],
        [0.9526, 0.9526, 0.9526]], dtype=torch.float64)
'''

soft_max_a = torch.nn.functional.softmax(a, dim = 1)
'''
soft_max_a = tensor([[0.0900, 0.2447, 0.6652],
        [0.0900, 0.2447, 0.6652]], dtype=torch.float64)
'''

soft_max_a = torch.nn.functional.softmax(a, dim = -1)
'''
soft_max_a = tensor([[0.0900, 0.2447, 0.6652],
        [0.0900, 0.2447, 0.6652]], dtype=torch.float64)
'''

最终结论

上面只是对各种情况的探索,可以理解,但是不要生搬硬套。下面的总结才是正确的理解方式,只需要看这里就好。

dim的可选值有0,1, 2, -1,其中:

  • dim=0: 第1个维度加和为1,也就是列
  • dim=1: 第2个维度加和为1,也就是行
  • dim=2: 第3个维度加和为1,每一个二维矩阵的对应元素加和为1
  • dim=-1: 最后一个维度加和为1。
    – 如果输入向量是1维,则就是该维(也就是对第1维)加和为1;
    – 如果输入向量是2维,则就是对列(也就是对第2维)加和为1;
    – 依次类推…

欢迎关注我们的微信公众号 运小筹

【Pytorch】| Pytorch中softmax的dim的详细总结

公众号往期推文如下

【Pytorch】| Pytorch中softmax的dim的详细总结
【Pytorch】| Pytorch中softmax的dim的详细总结
【Pytorch】| Pytorch中softmax的dim的详细总结
【Pytorch】| Pytorch中softmax的dim的详细总结

Original: https://blog.csdn.net/HsinglukLiu/article/details/123192780
Author: 刘兴禄
Title: 【Pytorch】| Pytorch中softmax的dim的详细总结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/708941/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球