为什么该语义细分网络在Pytorch中没有softmax分类层?

时间:2019-01-07 23:19:19

标签: neural-network deep-learning conv-neural-network pytorch

我正在尝试使用以下CNN架构进行语义像素分类。我使用的代码是here

但是,据我了解,这种类型的语义分割网络通常应具有softmax输出层,用于产生分类结果。

我找不到脚本内任何地方使用的softmax。 Here是我正在阅读的有关此细分架构的论文。从图2中,我看到正在使用softmax。因此,我想找出为什么脚本中没有此内容。欢迎任何见识。

1 个答案:

答案 0 :(得分:2)

您正在使用相当复杂的代码来进行训练/推断。但是,如果您稍加研究,就会发现here实现了损失函数,并且实际上使用cross_entropy损失训练了模型。查看文档:

  

此标准将log_softmax和nll_loss组合在一个函数中。

为获得数值稳定性,最好将softmax“吸收”到损失函数中,而不要通过模型进行显式计算。
这是一种相当普遍的做法,让模型输出“原始”预测(即“ logits”),然后让损失(即“准则”)在内部进行softmax。 如果您确实需要这些概率,则可以在部署模型时在顶部添加一个softmax。