import tensorflow as tf

            x = x + shortcut
            x = self._relu('relu_2', x)

            print('residual-unit-%s-shape: ' % name + str(x.shape.as_list()))

            return x

    @staticmethod
    def _conv(name, x, num_filters=16, kernel_size=(3, 3), padding='SAME', stride=(1, 1),
              initializer=tf.contrib.layers.xavier_initializer(), l2_strength=0.0, dilation=1.0, bias=-1):

        with tf.variable_scope(name):
            stride = [1, stride[0], stride[1], 1]
            kernel_shape = [kernel_size[0], kernel_size[1], x.shape[-1], num_filters]

            w = variable_with_weight_decay(kernel_shape, initializer, l2_strength)

            variable_summaries(w)
            if dilation > 1:
                conv = tf.nn.atrous_conv2d(x, w, dilation, padding)
            else:
                if type(padding)==type(''):
