'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.
:param train_set: training set
:return: self'

def _run_train_step(self, train_set):

    np.random.shuffle(train_set)
    batches = [_ for _ in utilities.gen_batches(train_set, self.batch_size)]
    updates = [self.w_upd8, self.bh_upd8, self.bv_upd8]
    for batch in batches:
        self.tf_session.run(updates, feed_dict=self._create_feed_dict(batch))
