def METHOD_NAME(self, y_true, y_pred):
    # We are responsible for calling update() as part of our train_batch() and evaluate_batch()
    # methods, which means we can specify any arguments we wish.  For our per-class F1 score,
    # it is useful to know y_true and y_pred.
    for cls in range(self.num_classes):
        self.true_positives[cls] += sum((y_pred == cls) * (y_true == cls))
        self.false_positives[cls] += sum((y_pred == cls) * (y_true != cls))
        self.false_negatives[cls] += sum((y_pred != cls) * (y_true == cls))