在上一篇文章中,我们自己手动实现了对于softmax操作和交叉熵的计算,可其实这些在Pytorch框架中已经被实现了,我们直接拿来使用即可。但是,为了能够对这些内容有着更深刻的理解,通常我们都会自己手动实现一次,然后在今后的使用中就可以直接拿现成的来用了。在接下来这篇文章中,笔者将首先介绍如何调用Pytorch中的交叉熵损失函数,然后再同时借助nn.Linear()
来实现一个简洁版的Softmax回归。
1 交叉熵损失函数
在前一篇文章中,我们首先分别自己实现了softmax和交叉熵的操作;然后再将两者结合实现了交叉熵损失函数的计算过程。但其实这两步通过Pytorch中的CrossEntropyLoss()
就能实现。
def softmax(x):
s = torch.exp(x)
return s / torch.sum(s, dim=1, keepdim=True)
def crossEntropy(y_true, logits):
c = -torch.log(logits.gather(1, y_true.reshape(-1, 1)))
return torch.sum(c)
logits = torch.tensor([[0.5, 0.3, 0.6], [0.5, 0.4, 0.3]])
y = torch.LongTensor([