Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 输出层的softmax和sigmoid函数_Tensorflow_Computer Vision_Deep Learning_Theano_Keras - Fatal编程技术网

Tensorflow 输出层的softmax和sigmoid函数

Tensorflow 输出层的softmax和sigmoid函数,tensorflow,computer-vision,deep-learning,theano,keras,Tensorflow,Computer Vision,Deep Learning,Theano,Keras,在与对象检测和语义分割相关的深度学习实现中,我看到了使用sigmoid或softmax的输出层。我不太清楚什么时候用哪个?在我看来,他们两人都能支持这些任务。对于这个选择有什么指导原则吗?softmax()当您需要一个概率分布时,它将提供帮助,该概率分布的总和为1sigmoid 在您的情况下,您希望在两个备选方案中进行分类和选择。我建议您使用softmax(),因为您将获得一个概率分布,您可以对其应用交叉熵损失函数。对象检测是图像中滑动窗口上使用的对象分类。在分类中,在某些类空间中找到正确的输出

在与对象检测和语义分割相关的深度学习实现中,我看到了使用sigmoid或softmax的输出层。我不太清楚什么时候用哪个?在我看来,他们两人都能支持这些任务。对于这个选择有什么指导原则吗?

softmax()
当您需要一个概率分布时,它将提供帮助,该概率分布的总和为1<当您希望输出范围从0到1,但不需要求和到1时,将使用code>sigmoid


在您的情况下,您希望在两个备选方案中进行分类和选择。我建议您使用
softmax()
,因为您将获得一个概率分布,您可以对其应用交叉熵损失函数。

对象检测是图像中滑动窗口上使用的对象分类。在分类中,在某些类空间中找到正确的输出是很重要的。例如,你检测到10个不同的物体,你想知道其中哪一个物体最有可能。那么softmax是好的,因为它的优点是整个层的总和为1


另一方面,语义分割以某种方式分割图像。我做过语义医学分割,结果是一幅二值图像。这意味着您可以将sigmoid作为输出来预测此像素是否属于此特定类别,因为每个输出类别的sigmoid值介于0和1之间。

通常,当存在“n”个类别时,使用Softmax(Softmax分类器)。Sigmoid或softmax均可用于二进制(n=2)分类

乙状结肠: S(x)=1/(1+(e^(-x)))

Softmax:

         σ(x)j = e    /  **Σ**{k=1 to K} e^zk    for(j=1.....K)
Softmax是一种多类Sigmoid,但如果您看到Softmax的功能,则所有Softmax单位的总和应为1。在乙状结肠中,这并不是真的必要


深入挖掘,还可以使用sigmoid进行多类分类。当你使用softmax时,基本上你得到了每一类的概率,(连接分布和多项式似然),它们的和必定是一。如果您使用sigmoid进行多类分类,它将类似于边缘分布和伯努利似然,p(y0/x),p(y1/x)等

sigmoid和softmax函数有不同的用途。有关何时在神经网络设计中使用sigmoid与softmax的详细说明,请参阅本文:

小结:

如果存在多标签分类问题,其中存在多个“正确答案”(输出不是互斥的),则可以对每个原始输出单独使用sigmoid函数。sigmoid将允许您对所有类都有很高的概率,其中一些类,或者没有一个类


如果您遇到多类分类问题,其中只有一个“正确答案”(输出是互斥的),则使用softmax函数。softmax将强制要求输出类的概率之和等于1,因此为了增加特定类的概率,您的模型必须相应地降低至少一个其他类的概率。

您好,我认为我的问题相当一般。当我阅读一些论文或深入学习实现时,我发现作者要么使用sigmoid,要么使用softmax。我看不到与这种选择背后的逻辑相关的解释。例如,如果我们正在处理语义分割问题,那么每个像素都应该被预测为类1或类2。(假设此语义分段是两类标记)。那么我认为softmax和sigmoid都可以使用。但是哪一个更好,或者哪一个应该得到更多的选择。虽然有点晚了,但我想我应该回答这个问题。在语义分割中,一个像素是否恰好属于这两类中的一类或同时属于这两类是很重要的。如果它可能属于这两个类,那么您希望使用sigmoid,因为它不关心类之间的依赖关系。如果像素恰好属于你想要使用softmax的两个类别中的一个,因为它说哪个类别更适合该像素。这个答案不是从这篇quora文章中抄袭而来的吗?