В чем разница между использованием метрик 'a cc' и tf.keras.metrics.Accuracy () - PullRequest
1 голос
/ 07 января 2020

При вызове метода компиляции модели мы можем передавать метрики.

Почему 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 dict изменения для 2 случаев выше. Использование tf.keras.metrics.Accuracy() приведет к logs с ключом accuracy, но оно всегда равно 0. Однако использование '1025 * приведет к logs с ключом acc, который имеет ожидаемые значения.

1 Ответ

1 голос
/ 08 января 2020

Потребовалось некоторое копание, но я считаю, что разница:

acc используется def binary_accuracy(y_true, y_pred, threshold=0.5) в metrics.py под капотом

в то время как

tf.keras.metrics.Accuracy использовал class Accuracy(MeanMetricWrapper) в metrics.py.

Я пришел к такому выводу, протестировав и изучив исходный код для файла keras metrics.py tenorflow

...