Керас F1 метрических показателей для обучения модели - PullRequest
0 голосов
/ 22 февраля 2019

Я новичок в keras и хочу тренировать модель с F1-счетом в качестве метрики.

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

model.compile(optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['accuracy'])

В вышеприведенном случае, даже если точность передается как метрика, она не будет использоваться для обучения модели.

Во-вторых, использовать обратные вызовы, как определено здесь,

import numpy as np
from keras.callbacks import Callback
from sklearn.metrics import confusion_matrix, f1_score, precision_score, recall_score
class Metrics(Callback):
def on_train_begin(self, logs={}):
 self.val_f1s = []
 self.val_recalls = []
 self.val_precisions = []

def on_epoch_end(self, epoch, logs={}):
 val_predict = (np.asarray(self.model.predict(self.model.validation_data[0]))).round()
 val_targ = self.model.validation_data[1]
 _val_f1 = f1_score(val_targ, val_predict)
 _val_recall = recall_score(val_targ, val_predict)
 _val_precision = precision_score(val_targ, val_predict)
 self.val_f1s.append(_val_f1)
 self.val_recalls.append(_val_recall)
 self.val_precisions.append(_val_precision)
 print “ — val_f1: %f — val_precision: %f — val_recall %f” %(_val_f1, _val_precision, _val_recall)
 return

metrics = Metrics()

Затем подгоните модель,

model.fit(training_data, training_target, 
 validation_data=(validation_data, validation_target),
 nb_epoch=10,
 batch_size=64,
 callbacks=[metrics])

Я не уверен, будет ли это обучать модель на счете f1.

1 Ответ

0 голосов
/ 22 февраля 2019

Вы не можете обучить нейронную сеть с f1-счетами.Для обратного распространения ошибки во время обучения вам нужна какая-то функция, которая говорит вам, насколько далеко ваш прогноз от ожидаемого значения.Такая функция является, например, потерей MSE.

Оценка F1, с другой стороны, является просто гармоническим средним между точностью и отзывом из ваших выборок.Он не говорит вам, в каком направлении вы должны обновить веса, чтобы получить лучшую модель.Это также не говорит вам, насколько далеко вы прогнозируете от ожидаемого значения.

Что вы можете сделать, это напечатать счет F1 после каждой эпохи.Пример того, как это сделать , можно найти в этом посте

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...