def train_more(self, X, epochs=100, noise_std=0.1):
        """This function allows the researcher to perform extra training
        instead of the fixed number determined
        by the fit() function.
        """
        # fit() should have been called first
        check_is_fitted(self, ['decision_scores_'])

        # Apply data scaling or not
        if self.preprocessing:
            X_norm = self.scaler_.transform(X)
        else:
            X_norm = np.copy(X)

        for n in range(epochs):
            if n % 50 == 0 and n != 0 and self.verbose == 1:
                print(f'Train iter: {n}')

            # Shuffle train 
            np.random.shuffle(X_norm)

            X_train_sel = X_norm[
                          :min(self.batch_size, self.n_samples_)].astype(
                np.float32)
            latent_noise = np.random.normal(0, 1, (
                X_train_sel.shape[0], self.latent_dim))
            X_train_sel += np.random.normal(0, noise_std,
                                            size=X_train_sel.shape)
            self.train_step((X_train_sel, latent_noise))

        if self.preprocessing:
            X_norm = self.scaler_.transform(X)
        else:
            X_norm = np.copy(X)

        pred_scores = self.get_outlier_scores(X_norm)
        self.decision_scores_ = pred_scores
        self._process_decision_scores()
        return self
This function allows the researcher to perform extra training
        instead of the fixed number determined
        by the fit() function.
        
pyod/models/alad.py