使用指标"acc"和tf.keras.metrics.Accuracy()有什么区别



调用模型的编译方法时,我们可以传入指标。

为什么tf.keras.metrics.Accuracy'acc'不同?

例如,以下 2 个调用给出不同的结果:

model.compile(optimizer=RMSprop(learning_rate=0.001),loss=tf.keras.losses.BinaryCrossentropy(),metrics=[tf.keras.metrics.Accuracy()])

与。

model.compile(optimizer=RMSprop(learning_rate=0.001),loss=tf.keras.losses.BinaryCrossentropy(),metrics=['acc'])

我注意到在使用回调on_epoch_end时,logs字典的键在上述 2 种情况下会发生变化。 使用tf.keras.metrics.Accuracy()将导致键accuracylogs,但它始终为 0。 但是,使用"acc"将导致具有预期值的键acclogs

进行了一些挖掘,但我相信区别在于:

acc在引擎盖下的metrics.py中使用def binary_accuracy(y_true, y_pred, threshold=0.5)

tf.keras.metrics.Accuracymetrics.py中使用了class Accuracy(MeanMetricWrapper)

我通过测试和检查tensorflow的keras metrics.py 文件的源代码得出了这个结论

最新更新