Я новичок в 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.