import tensorflow as tf

    
    def create_global_steps(self, n_points_train_set):
        self.n_batches_per_epoch = np.ceil(n_points_train_set/self.batch_size["train"])

        self.global_step = tf.train.get_or_create_global_step()
        self.global_epoch = tf.cast(tf.floor(tf.cast(self.global_step, tf.float32) /
                                            self.n_batches_per_epoch),
                                    tf.int64, "global_epoch")

        tf.add_to_collection("global_epoch", self.global_epoch)

    # this creates an operation to add to all trainable variables a white noise of param
    # std = tf.sqrt(variance)/10
    def create_random_update_op(self):

        vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES)

        update_opts = []
