custom metric for early stopping
class EarlyStopByF1(keras.callbacks.Callback):
def __init__(self, value = 0, verbose = 0):
super(keras.callbacks.Callback, self).__init__()
self.value = value
self.verbose = verbose
def on_epoch_end(self, epoch, logs={}):
predict = np.asarray(self.model.predict(self.validation_data[0]))
target = self.validation_data[1]
score = f1_score(target, prediction)
if score > self.value:
if self.verbose >0:
print("Epoch %05d: early stopping Threshold" % epoch)
self.model.stop_training = True
callbacks = [EarlyStopByF1(value = .90, verbose =1)]
model.fit(X, y, batch_size = 32, nb_epoch=nb_epoch, verbose = 1,
validation_data(X_val,y_val), callbacks=callbacks)