参考来源:
CSDN:Pytorch 学习笔记(七): F.softmax() 和 F.log_softmax() 函数详解

softmax

F.softmax() 和 F.log_softmax - 图1

1. 函数语法格式和作用

F.softmax() 作用:
按照行或者列来做归一化的
F.softmax() 函数语言格式:

  1. # 0是对列做归一化,1是对行做归一化
  2. F.softmax(x,dim=1) 或者 F.softmax(x,dim=0)

F.log_softmax() 作用:
在 softmax 的结果上再做多一次 log 运算。
F.log_softmax() 函数语言格式:

  1. F.log_softmax(x,dim=1) 或者 F.log_softmax(x,dim=0)

2. 参数解释

x 指的是输入矩阵。
dim 指的是归一化的方式,如果为 0 是对列做归一化,1 是对行做归一化。

3. 具体代码

  1. import torch
  2. import torch.nn.functional as F
  3. logits = torch.rand(2, 2)
  4. pred = F.softmax(logits, dim=1)
  5. pred1 = F.log_softmax(logits, dim=1)
  6. print('logits:\n', logits)
  7. print('F.softmax(logits, dim=1):\n', pred)
  8. print('F.log_softmax(logits, dim=1):\n', pred1)

结果:

  1. """output:
  2. logits:
  3. tensor([[0.9320, 0.5148],
  4. [0.5161, 0.2854]])
  5. F.softmax(logits, dim=1):
  6. tensor([[0.6028, 0.3972],
  7. [0.5574, 0.4426]])
  8. F.log_softmax(logits, dim=1):
  9. tensor([[-0.5062, -0.9233],
  10. [-0.5844, -0.8151]])
  11. """