parameters: (X, X_list, channel, kernel_size=3, 
                 stack_num=2, activation='ReLU',
                 unpool=True, batch_norm=False, concat=True, name='right0')
return_statement: return X
docstring: The decoder block of U-net.
      
      Input
      ----------
          X: input tensor.
          X_list: a list of other tensors that connected to the input tensor.
          channel: number of convolution filters.
          kernel_size: size of 2-d convolution kernels.
          stack_num: number of convolutional layers.
          activation: one of the `tensorflow.keras.layers` interface, e.g., 'ReLU'.
          unpool: True or 'bilinear' for Upsampling2D with bilinear interpolation.
                  'nearest' for Upsampling2D with nearest interpolation.
                  False for Conv2DTranspose + batch norm + activation.
          batch_norm: True for batch normalization, False otherwise.
          concat: True for concatenating the corresponded X_list elements.
          name: prefix of the created keras layers.
          
      Output
      ----------
          X: output tensor.
docstring_summary: The decoder block of U-net.
      
      Input
      ----------
          X: input tensor.
          X_list: a list of other tensors that connected to the input tensor.
          channel: number of convolution filters.
          kernel_size: size of 2-d convolution kernels.
          stack_num: number of convolutional layers.
          activation: one of the `tensorflow.keras.layers` interface, e.g., 'ReLU'.
          unpool: True or 'bilinear' for Upsampling2D with bilinear interpolation.
                  'nearest' for Upsampling2D with nearest interpolation.
                  False for Conv2DTranspose + batch norm + activation.
          batch_norm: True for batch normalization, False otherwise.
          concat: True for concatenating the corresponded X_list elements.
          name: prefix of the created keras layers.
          
      Output
      ----------
          X: output tensor.
docstring_tokens: The decoder block of U - net . Input ---------- X : input tensor . X_list : a list of other tensors that connected to the input tensor . channel : number of convolution filters . kernel_size : size of 2 - d convolution kernels . stack_num : number of convolutional layers . activation : one of the tensorflow . keras . layers interface e . g . ReLU . unpool : True or bilinear for Upsampling2D with bilinear interpolation . nearest for Upsampling2D with nearest interpolation . False for Conv2DTranspose + batch norm + activation . batch_norm : True for batch normalization False otherwise . concat : True for concatenating the corresponded X_list elements . name : prefix of the created keras layers . Output ---------- X : output tensor .
function: def UNET_right(X, X_list, channel, kernel_size=3, 
                 stack_num=2, activation='ReLU',
                 unpool=True, batch_norm=False, concat=True, name='right0'):
      
      '''
      The decoder block of U-net.
      
      Input
      ----------
          X: input tensor.
          X_list: a list of other tensors that connected to the input tensor.
          channel: number of convolution filters.
          kernel_size: size of 2-d convolution kernels.
          stack_num: number of convolutional layers.
          activation: one of the `tensorflow.keras.layers` interface, e.g., 'ReLU'.
          unpool: True or 'bilinear' for Upsampling2D with bilinear interpolation.
                  'nearest' for Upsampling2D with nearest interpolation.
                  False for Conv2DTranspose + batch norm + activation.
          batch_norm: True for batch normalization, False otherwise.
          concat: True for concatenating the corresponded X_list elements.
          name: prefix of the created keras layers.
          
      Output
      ----------
          X: output tensor.
      
      '''
      
      pool_size = 2
      
      X = decode_layer(X, channel, pool_size, unpool, 
                       activation=activation, batch_norm=batch_norm, name='{}_decode'.format(name))
      
      # linear convolutional layers before concatenation
      X = CONV_stack(X, channel, kernel_size, stack_num=1, activation=activation, 
                     batch_norm=batch_norm, name='{}_conv_before_concat'.format(name))
      if concat:
          # <--- *stacked convolutional can be applied here
          X = concatenate([X,]+X_list, axis=3, name=name+'_concat')
      
      # Stacked convolutions after concatenation 
      X = CONV_stack(X, channel, kernel_size, stack_num=stack_num, activation=activation, 
                     batch_norm=batch_norm, name=name+'_conv_after_concat')
      
      return X
function_tokens: def UNET_right ( X , X_list , channel , kernel_size = 3 , stack_num = 2 , activation = 'ReLU' , unpool = True , batch_norm = False , concat = True , name = 'right0' ) : pool_size = 2 X = decode_layer ( X , channel , pool_size , unpool , activation = activation , batch_norm = batch_norm , name = '{}_decode' . format ( name ) ) # linear convolutional layers before concatenation X = CONV_stack ( X , channel , kernel_size , stack_num = 1 , activation = activation , batch_norm = batch_norm , name = '{}_conv_before_concat' . format ( name ) ) if concat : # <--- *stacked convolutional can be applied here X = concatenate ( [ X , ] + X_list , axis = 3 , name = name + '_concat' ) # Stacked convolutions after concatenation  X = CONV_stack ( X , channel , kernel_size , stack_num = stack_num , activation = activation , batch_norm = batch_norm , name = name + '_conv_after_concat' ) return X