我正在尝试使用以下CNN架构进行语义像素分类。我使用的代码是here
但是,据我了解,这种类型的语义分割网络通常应具有softmax输出层,用于产生分类结果。
我找不到脚本内任何地方使用的softmax。 Here是我正在阅读的有关此细分架构的论文。从图2中,我看到正在使用softmax。因此,我想找出为什么脚本中没有此内容。欢迎任何见识。
答案 0 :(得分:2)
您正在使用相当复杂的代码来进行训练/推断。但是,如果您稍加研究,就会发现here实现了损失函数,并且实际上使用cross_entropy
损失训练了模型。查看文档:
此标准将log_softmax和nll_loss组合在一个函数中。
为获得数值稳定性,最好将softmax“吸收”到损失函数中,而不要通过模型进行显式计算。
这是一种相当普遍的做法,让模型输出“原始”预测(即“ logits”),然后让损失(即“准则”)在内部进行softmax。
如果您确实需要这些概率,则可以在部署模型时在顶部添加一个softmax。