处理多分类问题,在神经网络前面的层用Sigmod
在输出层用Sofetmax,可以输出分布,满足输出值大于等于零、和等于一。
如何变成正值且和为1?
NLLLoss
import numpy as np
y = np.array([1, 0, 0])
z = np.array([[0.2, 0.1, -0.1]])
y_pred = np.exp(z)/np.exp(z).sum()
loss = (-y * np.log(y_pred)).sum()
print(loss)
输出结果:0.9729189131256584
CrossEntropyLoss交叉熵损失
LongTensor 长整型张量
import torch
y = torch.LongTensor([0])
z = torch.Tensor([[0.2, 0.1, -0.1]])
criterion = torch.nn.CrossEntropyLoss()
loss = criterion(z, y)
print(loss)
criterion = torch.nn.CrossEntropyLoss()
Y = torch.LongTensor([2, 1