code: def evaluate(self, X, y):
          
          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]
docs: x
              Must match expected type
              Must match expected shape
          y
              Must match expected type