pytorch 计算 CrossEntropyLoss 是需要先过 softmax 层激活的。
我们发现多分类实现的时候,前向传播的时候,如果后面我们调用了损失函数CrossEntropyLoss,那么,最后一层是不需要再加softmax函数激活的。
下图是官网截图的代码:
一般我们的知识里,做一个多分类的输出,最后一层要加一个softmax()激活函数,但是这里却没有。是不是会觉得很奇怪?
但是你看了文档就明白了,事实上,CrossEntropyLoss()就是
softmax
和 负对数损失的结合。
如果我们用nn.NLLoss()则需要再后面加一个激励log_softmax()。