Я хочу использовать свою собственную метрику из обратного вызова в другом обратном вызове, таком как EarlyStopping или ModelCheckpoint. Но мне нужно как-то сохранить / сохранить / записать эту пользовательскую метрику так, чтобы другие обратные вызовы могли получить к ней доступ?
У меня есть:
class Metrics(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.precision = []
self.f1s = []
self.prc=0
self.f1s=0
def on_epoch_end(self, epoch, logs={}):
score = np.asarray(self.model.predict([self.validation_data[0],self.validation_data[1]]))
predict = np.round(np.asarray(self.model.predict([self.validation_data[0],self.validation_data[1]])))
targ = self.validation_data[2]
predict = (predict < 0.5).astype(np.float)
self.prc=sklm.precision_score(targ, predict)
self.f1s=sklm.f1_score(targ, predict)
self.precision.append(prc)
self.f1s.append(f1s)
print("— val_f1: %f — val_precision: %f" %(self.f1s, self.prc))
return
Теперь
metrics = Metrics()
es = EarlyStopping(monitor=metrics.prc, mode='max', verbose=1, patience=3,min_delta=0.01,restore_best_weights=True)
model.compile(loss=contrastive_loss, optimizer=adam)
model.fit([train_sen1, train_sen2], train_labels,
batch_size=512,
epochs=20,callbacks=[metrics,es],
validation_data=([dev_sen1, dev_sen2], dev_labels))
не работает, так как Earlystopping не знает о пользовательской метрике точности?
Кто-нибудь знает об этом журнале операторов обратного вызова? Могу ли я свопить мою метрику там.