调用模型的编译方法时,我们可以传入指标。
为什么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
字典的键针对上述两种情况发生了变化。使用tf.keras.metrics.Accuracy()
将导致logs
具有关键准确度
,但它始终为0。但是,使用'acc ' 将生成一个 logs
,其键 acc
具有预期的值。
最佳答案
进行了一些挖掘,但我相信区别在于:
acc
在 metrics.py
底层使用了 def binary_accuracy(y_true, y_pred, Threshold=0.5)
同时
tf.keras.metrics.Accuracy
在 metrics.py
中使用了 class Accuracy(MeanMetricWrapper)
。
我通过测试和检查 tensorflow's keras metrics.py file 的源代码得出了这个结论。
关于python - 使用指标 'acc' 和 tf.keras.metrics.Accuracy() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59635474/