x
            Must match expected type
            Must match expected shape
        y
            Must match expected type

def evaluate(self, X, y):
        """
        x
            Must match expected type
            Must match expected shape
        y
            Must match expected type
        """
        scores = self.ops.flatten(list(self.pipe(X)))
        if not hasattr(y, "shape"):
            y = self.ops.flatten(y)
        scores = scores.reshape(y.shape)
        if len(scores.shape) == 1:
            correct = ((scores >= 0.5) == (y >= 0.5)).sum()
        else:
            correct = (scores.argmax(axis=1) == y.argmax(axis=1)).sum()
        return correct / y.shape[0]