【问题标题】:How does neural networks metrics functions work?神经网络度量函数如何工作?
【发布时间】:2017-09-18 02:37:36
【问题描述】:

这里是 keras 度量函数定义:

def binary_accuracy(y_true, y_pred):
  return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)


def categorical_accuracy(y_true, y_pred):
  return K.cast(
      K.equal(K.argmax(y_true, axis=-1), K.argmax(y_pred, axis=-1)), K.floatx())

例如,如果我的 NN 具有 2 个神经元的输出层,则可以是: [0, 1] 或 [1, 0] 并使用 metrics=binary_accuracy

当我运行我的 NN 进行训练时,它总是显示每个批次的一些准确度值。这个怎么算?是不是,当预测值大于 0.5 时为 1,当该值小于 0.5 时为 0?

【问题讨论】:

    标签: keras metrics floating-accuracy recurrent-neural-network


    【解决方案1】:

    正如您所知道的,有许多可能的方法来定义一个准确性,通常很难说最好的解决方案是什么。这还取决于您以后将如何使用该网络。

    但以 binary_accuracy 为例,它确实将 rounded 预测与二进制训练数据进行了比较。现在这并不意味着当输出 > 0.5 时精度为 1。这意味着当输出和训练目标之间的差异

    换句话说:当输出接近应有的水平时,网络是准确的。

    【讨论】:

    • 你确定它比较的是0.5的差异吗?
    • @DmitryNalyvaiko:嗯,我认为K.round 不会将 0.4 舍入到 1.0,所以是的,这就是它的数学含义。
    • 但它如何计算向量的差异?就像“vector1 - vector2”还是“length(vector1) - length(vector2)”?
    • 此外,K.round 仅使用单个 y_pred。如果只有 1 个操作数,它如何将差异与 0.5 进行比较?
    • @DmitryNalyvaiko:你似乎在学习基本的数学表达式。
    猜你喜欢
    • 2014-04-20
    • 2014-03-15
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2014-06-17
    • 2011-11-19
    相关资源
    最近更新 更多