import tensorflow as tf

            tf.summary.scalar(name, value)

        summary_op = tf.summary.merge_all()

        return (summary_op, monitored_values)

    def _make_var(self, name, shape, dtype=None, no_reg=False, initializer=None, init_constant=None, trainable=True):
        if initializer is None:
            if init_constant is not None:
                initializer = tf.constant_initializer(init_constant, dtype=tf.float32)
            else:
                initializer = tf.contrib.keras.initializers.he_normal()

        # Ensure that name is unique by shape too
        name += '-shape-{}'.format('x'.join([str(x) for x in shape]))

        var = tf.get_variable(name, shape=shape, dtype=dtype, initializer=initializer, trainable=trainable)

