【问题标题】:Does tf.nn.sigmoid_cross_entropy_with_logits covert data into probabilities?tf.nn.sigmoid_cross_entropy_with_logits 是否将数据转换为概率?
【发布时间】:2019-03-17 08:39:00
【问题描述】:

在分类问题中,我们更喜欢应用tf.nn.softmax 函数,因为该函数以概率形式给出输出,或者我们也可以实现tf.nn.softmax_cross_entropy_with_logits,它将softmax 激活函数应用于模型的输出。我想将我的数据分为两类。我遇到了一个代码,他们在最后一层使用了tf.nn.sigmoid_cross_entropy_with_logits。我想知道我们可以在最后一层使用sigmoid作为激活函数吗?我们不应该使用softmax吗?如果不应用 softmax,我怎么能知道概率?因为在模型结束时,当我们检查模型的准确性时,我们使用以下命令

tf.equal(tf.argmax(y,axis=1),tf.argmax(y_,axis=1))

在最后一个全连接层使用 sigmoid 之后,我们可以使用上面的命令来检查正确的预测吗?

【问题讨论】:

    标签: tensorflow machine-learning classification


    【解决方案1】:

    Softmax 用于将多个输出神经元的原始输出值转换为多类分类问题的概率。对于二元分类问题,不是使用两个输出神经元,而是使用单个输出神经元并将逻辑sigmoid function 应用于输出值。当 sigmoid 将值投射到 [0, 1] 范围内时,您会得到概率 p。这是当前输入属于一类的概率。那么输入属于另一个类的概率是1 - p

    对于您的特定情况,请注意tf.nn.sigmoid_cross_entropy_with_logits 的文档说:

    测量离散分类任务中的概率误差 其中每个类是独立的,不互斥的。为了 例如,可以执行多标签分类,其中一张图片 可以同时包含大象和狗。

    根据您发布的代码,我假设网络的输出维度大于一(否则argmax 没有意义),可能是二。这意味着代码实际上执行了多个二进制分类,它们应该是独立的——但是你说它应该是一个单一的二进制分类。

    如果我的假设是正确的,那么代码就是错误的,因为两个独立的二进制分类与单个分类问题完全不同。实际上,y 应该只有一个输出,您将检查概率是否为> 0.5 以将其与目标进行比较。

    【讨论】:

    • 是的,我想将数据分为两类,并且有两个输出神经元。您能否在您的陈述“这意味着代码实际上执行多个二进制分类,应该是独立的”中解释什么是独立的。您所说的多重和单一二进制分类是什么意思?我有属于 2 个不同范围的数据。我将零标记为第一个范围,将 1 标记为第二个范围。
    • 此外,如果我必须使用tf.equal(tf.argmax(y,axis=1),tf.argmax(y_,axis=1)) 来检查我的模型的准确性,我能否从您的回答中推断出我不能使用 tf.nn.sigmoid_cross_entropy_with_logits
    • 在二元分类问题中,您分配 2 个类别之一。在多类问题中,您分配 3 个或更多类中的一个。在二元问题中,您不需要两个输出神经元,因为(正如我所描述的)您可以简单地使用一个神经元并对输出设置阈值,而不是使用多个并取最大值。 -- 是的,使用tf.equal(tf.argmax(y,axis=1),tf.argmax(y_,axis=1))tf.nn.sigmoid_cross_entropy_with_logits 毫无意义(因为你正在学习独立的输出,而不是像使用softmax 时那样的依赖输出)。
    • 你应该考虑学习一段时间的神经网络分类理论,以便对这些概念有一个深刻的理解。
    【解决方案2】:

    使用tf.nn.sigmoid_cross_entropy_with_logits 的代码不是在做多类分类,而是在做多标签分类ation,你有多个类,但这些不是排他性的,多个类可能是同时预测。

    对于多标签情况,sigmoid 更可取,因为这样您可以获得每个类的独立概率。这种情况下的评估是不同的,你不能使用简单的准确率,而是使用每个类的准确率/召回率。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-21
      • 2022-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多