调用模型的编译方法时,我们可以传入指标。
为什么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()
将导致键accuracy
logs
,但它始终为 0。 但是,使用"acc"将导致具有预期值的键acc
的logs
。
进行了一些挖掘,但我相信区别在于:
acc
在引擎盖下的metrics.py
中使用def binary_accuracy(y_true, y_pred, threshold=0.5)
而
tf.keras.metrics.Accuracy
metrics.py
中使用了class Accuracy(MeanMetricWrapper)
。
我通过测试和检查tensorflow的keras metrics.py 文件的源代码得出了这个结论
。