代码之家  ›  专栏  ›  技术社区  ›  user121

为什么这个语义分割网络在pytorch中没有softmax分类层?

  •  1
  • user121  · 技术社区  · 6 年前

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

    然而,根据我的理解,这种类型的语义分割网络通常应该有一个SoftMax输出层来生成分类结果。

    我找不到脚本中任何地方使用的SoftMax。 Here 是我正在阅读的关于这个细分架构的论文。从图2中,我看到使用了SoftMax。因此,我想知道为什么脚本中缺少这个。任何见解都是受欢迎的。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Shai    6 年前

    您使用相当复杂的代码进行培训/推理。但是如果你稍微挖掘一下,你会发现损失函数已经实现了。 here 你的模型实际上是用 cross_entropy 损失。看医生:

    该标准将对数软最大值和nll损失结合在一个函数中。

    对于数值稳定性而言,最好是将SoftMax“吸收”到损失函数中,而不是通过模型进行明确计算。
    这是一个非常常见的做法,让模型输出“原始”预测(也称为“逻辑”),然后让损失(也称为标准)在内部执行SoftMax。 如果您真的需要概率,您可以在部署模型时在顶部添加一个softmax。