【问题标题】:Why does this semantic segmentation network have no softmax classification layer in Pytorch?为什么这个语义分割网络在 Pytorch 中没有 softmax 分类层?
【发布时间】:2019-06-02 15:20:30
【问题描述】:

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

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

我在脚本中的任何地方都找不到使用 softmax。 Here 是我正在阅读的关于这种分割架构的论文。从图 2 中,我看到使用了 softmax。因此,我想找出脚本中缺少此内容的原因。欢迎任何见解。

【问题讨论】:

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


    【解决方案1】:

    您正在使用相当复杂的代码来进行训练/推理。但是,如果您稍微挖掘一下,您会发现损失函数是使用here 实现的,并且您的模型实际上是使用cross_entropy 损失来训练的。看文档:

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

    为了数值稳定性,最好将softmax“吸收”到损失函数中,而不是由模型显式计算。
    这是一种非常常见的做法,让模型输出“原始”预测(又名“logits”),然后让损失(又名标准)在内部进行 softmax。 如果您真的需要概率,您可以在部署模型时在顶部添加一个 softmax。

    【讨论】:

      猜你喜欢
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 2021-07-30
      • 2020-02-08
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      相关资源
      最近更新 更多