def _run_train_step(self, train_set):
    '"\n        Run a training step. A training step is made by randomly shuffling the training set,\n        divide into batches and run the variable update nodes for each batch. If self.plot_training_loss \n        is true, will record training loss after each batch. \n        INPUT PARAMETER train_set: training set\n        OUTPUT self\n        '
    np.random.shuffle(train_set)
    batches = [_ for _ in self.gen_batches(train_set, self.batch_size)]
    updates = [self.w_upd8, self.bh_upd8, self.bv_upd8]
    for batch in batches:
        if self.plot_training_loss:
            (_, loss) = self.tf_session.run([updates, self.loss_function], feed_dict=self._create_feed_dict(batch))
            self.training_losses.append(loss)
        else:
            self.tf_session.run(updates, feed_dict=self._create_feed_dict(batch))
"
Run a training step. A training step is made by randomly shuffling the training set,
divide into batches and run the variable update nodes for each batch. If self.plot_training_loss 
is true, will record training loss after each batch. 
INPUT PARAMETER train_set: training set
OUTPUT self
def _run_train_step(self, train_set):
    '"\n        Run a training step. A training step is made by randomly shuffling the training set,\n        divide into batches and run the variable update nodes for each batch. If self.plot_training_loss \n        is true, will record training loss after each batch. \n        INPUT PARAMETER train_set: training set\n        OUTPUT self\n        '
    np.random.shuffle(train_set)
    batches = [_ for _ in self.gen_batches(train_set, self.batch_size)]
    updates = [self.w_upd8, self.bh_upd8, self.bv_upd8]
    for batch in batches:
        if self.plot_training_loss:
            (_, loss) = self.tf_session.run([updates, self.loss_function], feed_dict=self._create_feed_dict(batch))
            self.training_losses.append(loss)
        else:
            self.tf_session.run(updates, feed_dict=self._create_feed_dict(batch))