code: def on_epoch_end(self, epoch, logs={}):
      label_true = []
      label_pred = []
      for i in range(len(self.seq)):
          x_true, y_true = self.seq[i]
          lengths = self.get_lengths(y_true)
          y_pred = self.model.predict_on_batch(x_true)
  
          y_true = self.p.inverse_transform(y_true, lengths)
          y_pred = self.p.inverse_transform(y_pred, lengths)
  
          label_true.extend(y_true)
          label_pred.extend(y_pred)
  
      score = f1_score(label_true, label_pred)
      print(" - f1: {:04.2f}".format(score * 100))
      print(classification_report(label_true, label_pred))
      logs["f1"] = score
  
file_path: anago/anago/callbacks.py
imports: import numpy
  from keras.callbacks import Callback
  from seqeval.metrics import f1_score, classification_report
label_desc: Use image node_id 3 for calling the F1score obj's underlying member method code with example usage: obj.on_epoch_end(epoch, logs) without return types