import tensorflow as tf


        self.updates = tf.group(denoise_updates, ranker_updates)

    def DenoisingNet(self, list_size, forward_only=False, scope=None):
        with tf.variable_scope(scope or "denoising_model"):
            # If we are in testing, do not compute propensity
            if forward_only:
                return tf.ones_like(self.output)#, tf.ones_like(self.output)
            input_vec_size = list_size*4

            def propensity_network(input_data, index):
                reuse = None if index < 1 else True
                propensity_initializer = tf.constant_initializer(0.001) if self.hparams.constant_propensity_initialization else None
                with tf.variable_scope("propensity_network", initializer=propensity_initializer,
                                                 reuse=reuse):
                    output_data = input_data
                    current_size = input_vec_size
                    output_sizes = [
                        int((list_size+1)/2) + 1, 
                        int((list_size+1)/4) + 1,
                        1
                    ]
                    for i in range(len(output_sizes)):
                        expand_W = tf.get_variable("W_%d" % i, [current_size, output_sizes[i]])
                        expand_b = tf.get_variable("b_%d" % i, [output_sizes[i]])
                        output_data = tf.nn.bias_add(tf.matmul(output_data, expand_W), expand_b)
