import tensorflow as tf

            biases = self.variable('biases', [output_channels], tf.constant_initializer(0.0))
            deconv_layer = tf.nn.bias_add(deconv, biases)
            if bn:
                deconv_layer = self.batch_norm_layer('batch_norm_layer',deconv_layer,training)
            if relu:
                deconv_layer = tf.nn.relu(deconv_layer, name=scope.name)
        print('Deconv layer {0} -> {1}'.format(bottom.get_shape().as_list(),deconv_layer.get_shape().as_list()))
        return deconv_layer



    def variable(self, name, shape, initializer,regularizer=None):
        with tf.device('/cpu:0'):
            return tf.get_variable(name, shape, initializer=initializer, regularizer=regularizer, trainable=True)


    def fc_layer(self, bottom, in_size, out_size, name):
    	with tf.variable_scope(name):
    		weights, biases = self.get_fc_var(in_size, out_size, name)

    		x = tf.reshape(bottom, [-1, in_size])
    		fc = tf.nn.bias_add(tf.matmul(x, weights), biases)

    		tf.summary.histogram('weight', weights)
    		tf.summary.histogram('bias', biases)

