Keras 神经网络度量函数是如何工作的?

Keras 神经网络度量函数是如何工作的?,keras,metrics,floating-accuracy,recurrent-neural-network,Keras,Metrics,Floating Accuracy,Recurrent Neural Network,以下是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

以下是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())
例如,如果我有输出层为2个神经元的NN,可以是: [0,1]或 [1,0]并使用度量=二进制精度


当我运行我的NN进行训练时,它总是显示每个批次的一些精度值。这算什么?它是否像,当预测值大于0.5时-它是1,当该值小于0.5时-它是0?

正如您所想,有许多可能的方法来定义精度,通常很难说什么是最佳解决方案。这还取决于您以后如何使用该网络


但以二进制精度为例,它确实将舍入的预测与二进制训练数据进行了比较。这并不意味着当输出大于0.5时,精度为1。这意味着当输出和训练目标之间的差异为0.5时,精度为1。你确定它会将差异与0.5进行比较吗?@DmitryNalyvaiko:嗯,我不认为
K.round
会将0.4舍入到1.0,所以是的,这是数学上的意思。但它如何计算向量的差异呢?它类似于“vector1-vector2”或“length(vector1)-length(vector2)”?而且K.round只使用单个y_pred。如果它只有1个操作数,它如何将difference与0.5进行比较?@DmitryNalyvaiko:你似乎在努力学习基本的数学表达式。