torch.nn.functional.F.softmax 公式 import numpy as np import torch import torch . nn . functional as F def my_softmax ( x ): exp_x = np . exp ( x ) return exp_x / np . sum ( exp_x ) x = np . array ([ 1.5 , 2.2 , 3.1 , 0.9 , 1.2 , 1.7 ]) x
torch.nn.functional.F.softmax
公式
import torch
import torch.nn.functional as F
def my_softmax(x):
exp_x = np.exp(x)
return exp_x/np.sum(exp_x)
x = np.array([1.5, 2.2, 3.1, 0.9, 1.2, 1.7])
xt = torch.from_numpy(x)
print('F.softmax:', F.softmax(xt))
print('my_softmax', my_softmax(x))
结果一致
从源码上来看,torch.nn.functional.F.softmax实际上调用的是Tensor自身的softmax函数
torch.nn.functional.F.softmax
公式
import torch
import torch.nn.functional as F
def my_softmax(x):
exp_x = np.exp(x)
return exp_x/np.sum(exp_x)
def my_log_softmax(x):
return np.log(my_softmax(x))
x = np.array([1.5, 2.2, 3.1, 0.9, 1.2, 1.7])
xt = torch.from_numpy(x)
print('F.softmax:', F.log_softmax(xt))
print('my_softmax', my_log_softmax(x))
结果一致