def layer_op(self, inputs, is_training=True):
    '\n        Consists of::\n\n            (inputs)--conv_0-o-conv_1--conv_2-+-(conv_res)--down_sample--\n                             |                |\n                             o----------------o\n\n        conv_0, conv_res is also returned for feature forwarding purpose\n        '
    conv_0 = Conv(n_output_chns=self.n_output_chns, kernel_size=self.kernel_size, acti_func=self.acti_func, with_bias=False, feature_normalization='batch', **self.conv_param)(inputs, is_training)
    conv_res = ResUnit(n_output_chns=self.n_output_chns, kernel_size=self.kernel_size, acti_func=self.acti_func, type_string=self.type_string, **self.conv_param)(conv_0, is_training)
    conv_down = Down('Max', kernel_size=self.downsample_kernel_size, stride=self.downsample_stride)(conv_res)
    return (conv_down, conv_0, conv_res)
Consists of::

    (inputs)--conv_0-o-conv_1--conv_2-+-(conv_res)--down_sample--
                     |                |
                     o----------------o

conv_0, conv_res is also returned for feature forwarding purpose
def layer_op(self, inputs, is_training=True):
    '\n        Consists of::\n\n            (inputs)--conv_0-o-conv_1--conv_2-+-(conv_res)--down_sample--\n                             |                |\n                             o----------------o\n\n        conv_0, conv_res is also returned for feature forwarding purpose\n        '
    conv_0 = Conv(n_output_chns=self.n_output_chns, kernel_size=self.kernel_size, acti_func=self.acti_func, with_bias=False, feature_normalization='batch', **self.conv_param)(inputs, is_training)
    conv_res = ResUnit(n_output_chns=self.n_output_chns, kernel_size=self.kernel_size, acti_func=self.acti_func, type_string=self.type_string, **self.conv_param)(conv_0, is_training)
    conv_down = Down('Max', kernel_size=self.downsample_kernel_size, stride=self.downsample_stride)(conv_res)
    return (conv_down, conv_0, conv_res)