Точность Keras с пользовательской функцией потерь - PullRequest
1 голос
/ 14 апреля 2020

Я использую пользовательскую функцию потерь в Keras:

def get_top_one_probability(vector):
  return (K.exp(vector) / K.sum(K.exp(vector)))

def listnet_loss(real_labels, predicted_labels):
  return -K.sum(get_top_one_probability(real_labels) * tf.math.log(get_top_one_probability(predicted_labels)))

Как вычисляется метри c accuracy с пользовательской функцией потерь?

1 Ответ

0 голосов
/ 14 апреля 2020

Функции потери и функции точности - это две разные метрики.
Изменение одного не изменит другого. Поэтому, если ваша задача представляет собой проблему регрессии, функция точности не изменится, и все будет в порядке (Keras использует функцию regression accuracy для задачи регрессии). То же самое для классификации мультикласса (Keras использует функцию categorical_accuracy для задачи мультикласса).

Но, убедитесь, что когда задание имеет двоичную классификацию, изменение функции потерь меняет вашу функцию точности с binary_accuracy на categorical_accuracy, и, таким образом, вы можете получить другие результаты.
Решение для это использовать двоичную точность следующим образом:

def binary_accuracy(y_true, y_pred):
    return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
model.compile(loss=custom_loss,
              metrics=[binary_accuracy])
...