为什么Cleverhans pytorch教程使用log_softmax代替logits作为输出

时间:2019-12-13 03:15:50

标签: pytorch cleverhans

生成对抗性示例时,通常使用 logits 作为神经网络的输出,然后使用交叉熵训练网络。

但是,我发现cleverhans的教程使用log softmax,然后将pytorch模型转换为张量流模型,最后训练该模型。

https://github.com/tensorflow/cleverhans/blob/master/cleverhans_tutorials/mnist_tutorial_pytorch.py#L65

我想知道是否有人对使用logits而不是log_softmax有什么看法?

1 个答案:

答案 0 :(得分:0)

正如您所说,当我们从神经网络获取logit时,我们将使用CrossEntropyLoss对其进行训练。另一种方法是计算log_softmax,然后通过最小化对数可能性(NLLLoss)来训练网络。

如果您要训练网络进行分类任务,则两种方法基本相同。但是,如果您具有不同的目标函数,则可能会发现这两种技术之一,在您的方案中特别有用。

参考