Как использовать пользовательскую метрику из обратного вызова с EarlyStopping или ModelCheckpoint? - PullRequest
0 голосов
/ 15 октября 2019

Я хочу использовать свою собственную метрику из обратного вызова в другом обратном вызове, таком как 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 не знает о пользовательской метрике точности?

Кто-нибудь знает об этом журнале операторов обратного вызова? Могу ли я свопить мою метрику там.

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