之前了解到softmax
作为输出层加上log-likelihood cost function
(和nll_loss
pytorch中的一样)可以解决学习减速问题。
但是,当我学习 pytorch mnist 教程时,我很困惑为什么使用log_softmax
作为输出层和nll_loss
(负对数似然损失)作为损失函数的组合(L26和L34)。
我发现使用log_softmax
+nll_loss
时,测试准确率为99%,而使用softmax
+nll_loss
时,测试准确率为97%。
我很困惑log_softmax
over有什么好处softmax
?我们如何解释它们之间的性能差距?log_softmax
+nll_loss
总是比softmax
+nll_loss
好吗?