<p>您可以参考<a href="https://keras.io/metrics/" rel="nofollow noreferrer">Keras Metrics documentation</a>查看所有可用的度量(例如二进制精度)。您还可以创建自己的自定义度量(并确保它完全符合您的期望)。我想确定<a href="https://stackoverflow.com/a/50686741/2113717">neurite</a>关于准确度的计算方法是正确的,所以这就是我所做的(注意:<code>activation="sigmoid"</code>):</p>
<pre><code>from keras.metrics import binary_accuracy
def custom_acc(y_true, y_pred):
return binary_accuracy(y_true, y_pred)
# ...
model.compile(loss="binary_crossentropy", optimizer=optimizer, metrics=[
"accuracy",
"binary_accuracy",
"categorical_accuracy",
"sparse_categorical_accuracy",
custom_acc
])
</code></pre>
<p>运行训练时,您将看到<code>custom_acc</code>始终等于<code>binary_accuracy</code>(因此等于<code>custom_acc</code>)。</p>
<p>现在您可以参考<a href="https://github.com/keras-team/keras/blob/2ad932ba4ea501af7c3163573fce994ef878d8ef/keras/metrics.py#L26" rel="nofollow noreferrer">Keras code on Github</a>来查看它是如何计算的:</p>
<pre><code>K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
</code></pre>
<p>这证实了<a href="https://stackoverflow.com/a/50686741/2113717">neurite</a>所说的(即,如果预测值是<code>[0, 0, 0, 0, 0, 1]</code>,而实际标签是<code>[0, 0, 0, 0, 0, 0]</code>,那么准确度是<code>5/6</code>)。</p>