'Arguments:
num_classes (int): Number of different output classes.
binarize (bool, optional): If True will attempt to convert the model
outputs to a one-hot encoding (in place).
Defaults to False.
epsilon (float, optional): Smoothing to apply to avoid division by zero.
Defaults to 1e-6.'

def __init__(self, num_classes, binarize=False, epsilon=1e-06):

    self.outputs = self.be.empty((num_classes, 2))
    self.token_stats = self.be.empty((num_classes, 3))
    self.metric_names = ['Precision', 'Recall']
    if binarize:
        self.bin_buf = self.be.iobuf(1, dtype=np.int32)
    else:
        self.bin_buf = None
    self.eps = epsilon
