pytorch CrossEntropyLoss
import torch
import torch.nn as nn
import math
loss = nn.CrossEntropyLoss()
input = torch.randn(3, 5, requires_grad=True)
print('输入:')
print(input,input.shape)
target = torch.empty(3, dtype=torch.long).random_(5)
print("target:")
print(target,target.shape)
output = loss(input, target)
print("计算loss的结果:")
print(output)
first = [0,0,0]
for i in range(3):
first[i] -= input[i][target[i]]
print(target[i])
print(first)
second = [0,0,0]
for i in range(3):
for j in range(5):
second[i] += math.exp(input[i][j])
res = [0,0,0]
for i in range(3):
res[i] += first[i] +math.log(second[i])
print("自己的计算结果:")
print(res)
print(res[0]+res[1]+res[2])
print((res[0]+res[1]+res[2])/3)