目录
在Pytorch中的交叉熵函数的血泪史要从nn.CrossEntropyLoss()这个损失函数开始讲起。从表面意义上看,这个函数好像是普通的交叉熵函数,但是如果你看过一些Pytorch的资料,会告诉你这个函数其实是softmax()和交叉熵的结合体。然而如果去官方看这个函数的定义你会发现是这样子的:
哇,竟然是nn.LogSoftmax()和nn.NLLLoss()的结合体,这俩都是什么玩意儿啊。再看看你会发现甚至还有一个损失叫nn.Softmax()以及一个叫nn.nn.BCELoss()。我们来探究下这几个损失到底有何种关系。
nn.Softmax和nn.LogSoftmax
首先nn.Softmax()官网的定义是这样的:
嗯...就是我们认识的那个softmax。那nn.LogSoftmax()的定义也很直观了: