code: def fit(self, X, y, epochs=None):
          
          if self.check_input:
              X, y = self._check_good_input(X, y)
  
          if self.use_label_encoder:
              self.enc_ = LabelEncoder()
              y = self.enc_.fit_transform(y).astype(np.int32)
              self.classes_ = self.enc_.classes_
          self.initialize()
  
          try:
              self.train_loop(X, y, epochs=epochs)
          except KeyboardInterrupt:
              pass
          return self
docs: Runs the training loop for a given number of epochs
  
          :param X:  The input data
          :param y:  The ground truth
          :param epochs: The number of epochs to run, if `None` runs for the
                         network's :attr:`max_epochs`
          :return: This instance