当前位置 : 主页 > 编程语言 > python >

【pytorch】使用numpy实现pytorch的softmax函数与cross_entropy函数

来源:互联网 收集:自由互联 发布时间:2022-06-15
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

公式
【pytorch】使用numpy实现pytorch的softmax函数与cross_entropy函数_pytorch

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])
xt = torch.from_numpy(x)


print('F.softmax:', F.softmax(xt))
print('my_softmax', my_softmax(x))

结果一致
【pytorch】使用numpy实现pytorch的softmax函数与cross_entropy函数_pytorch_02
从源码上来看,torch.nn.functional.F.softmax实际上调用的是Tensor自身的softmax函数
【pytorch】使用numpy实现pytorch的softmax函数与cross_entropy函数_python_03

torch.nn.functional.F.softmax

公式
【pytorch】使用numpy实现pytorch的softmax函数与cross_entropy函数_python_04

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)

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))

结果一致
【pytorch】使用numpy实现pytorch的softmax函数与cross_entropy函数_python_05


【文章原创作者:华为云代理 http://www.558idc.com/hw.html处的文章,转载请说明出处】
网友评论