Можно ли определить свою собственную функцию оценки в Keras?

#tensorflow #machine-learning #keras #neural-network

#tensorflow #машинное обучение #keras #нейронная сеть

Вопрос:

Согласно этому потоку: https://datascience.stackexchange.com/questions/49109/loss-val-loss-are-decreasing-but-accuracies-are-the-same-in-lstm когда мы используем metrics='accuracy' во время обучения нейронную сеть , то Keras , что происходит под капотом , это:

 if metric in ('accuracy', 'acc'):
    metric_fn = metrics_module.binary_accuracy
  

где

 def binary_accuracy(y_true, y_pred):
    return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
  

В моей модели я имею дело с непрерывными данными, для которых более применимо использование другой функции оценки. Возможно ли изменить эту предопределенную метрику на что-то специально созданное?

Ответ №1:

Я нашел ответ. Мы можем определить нашу метрику следующим образом:

 def my_metric(y_true, y_pred):
    ...
  

а затем просто используйте его следующим образом:

 model.compile(optimizer='...', loss='...', metrics=[my_metric])