代码之家  ›  专栏  ›  技术社区  ›  Francesco Pegoraro

为什么进来模型.evaluate()Keras的损失用于计算准确度?

  •  0
  • Francesco Pegoraro  · 技术社区  · 6 年前

    这也许是个愚蠢的问题,但是:

    我注意到损失函数的选择修改了评估过程中获得的准确度。

    我认为损失只是在训练过程中使用的,当然,它取决于模型在做出预测时的优点,而不是准确度,即正确预测的数量超过总样本数。

    EDIT

    我没有正确地解释我自己。

    我的问题来了,因为我最近训练了一个模特 binary_crossentropy 但这是不对的! 我检查“手动”和模型得到44%的总预测。然后我改成了 categorical_crossentropy 然后准确度是正确的。

    MAYBE ANSWER 发件人: another question

    我发现了问题。metrics=['accuracy']根据成本函数自动计算准确度。所以用二元交叉熵表示二元精度,而不是分类精度。使用分类熵会自动切换到分类精度,现在它与使用model1.predict()手动计算的结果相同。

    3 回复  |  直到 6 年前
        1
  •  1
  •   Sebastian E    6 年前

    Keras根据你的损失函数选择要使用的绩效指标。当你使用二进制交叉熵时,虽然它使用的是二进制交叉熵,但它的计算方式与分类交叉熵不同。如果你有一个以上的输出神经元,你应该使用绝对交叉熵。

        2
  •  0
  •   jeffhale    6 年前

    这些权重决定了在总样本数上做出了多少正确的预测。因此,正确的做法是看到损失函数的选择将影响模型的准确性。

        3
  •  0
  •   Francesco Pegoraro    6 年前

    发件人: another question

    自动从成本函数。所以用二元交叉熵 model1.predict()。