class_docstr: This class defines a composite layer with optional components::
  
      deconvolution -> batch_norm -> activation -> dropout
  
  The b_initializer and b_regularizer are applied to the DeconvLayer
  The w_initializer and w_regularizer are applied to the DeconvLayer,
  the batch normalisation layer, and the activation layer (for 'prelu')
class_docstr_tok: ["This","class","defines","a","composite","layer","with","optional","components",":",":","deconvolution","-",">","batch_norm","-",">","activation","-",">","dropout","The","b_initializer","and","b_regularizer","are","applied","to","the","DeconvLayer","The","w_initializer","and","w_regularizer","are","applied","to","the","DeconvLayer",",","the","batch","normalisation","layer",",","and","the","activation","layer","(","for","'prelu","'",")"]
code: def __init__(
      self,
      n_output_chns,
      kernel_size=3,
      stride=1,
      padding="SAME",
      with_bias=False,
      feature_normalization="batch",
      group_size=-1,
      acti_func=None,
      w_initializer=None,
      w_regularizer=None,
      b_initializer=None,
      b_regularizer=None,
      moving_decay=0.9,
      eps=1e-5,
      name="deconv",
  ):
      self.acti_func = acti_func
      self.feature_normalization = feature_normalization
      self.group_size = group_size
      self.layer_name = "{}".format(name)
      if self.feature_normalization != "group" and group_size > 0:
          raise ValueError(
              "You cannot have a group_size > 0 if not using group norm"
          )
      elif self.feature_normalization == "group" and group_size <= 0:
          raise ValueError(
              "You cannot have a group_size <= 0 if using group norm"
          )
  
      if self.feature_normalization is not None:
          # appending, for example, '_bn' to the name
          self.layer_name += "_" + self.feature_normalization[0] + "n"
      if self.acti_func is not None:
          self.layer_name += "_{}".format(self.acti_func)
      super(DeconvolutionalLayer, self).__init__(name=self.layer_name)
  
      # for DeconvLayer
      self.n_output_chns = n_output_chns
      self.kernel_size = kernel_size
      self.stride = stride
      self.padding = padding
      self.with_bias = with_bias
  
      # for BNLayer
      self.moving_decay = moving_decay
      self.eps = eps
  
      self.initializers = {
          "w": w_initializer
          if w_initializer
          else default_w_initializer(),
          "b": b_initializer
          if b_initializer
          else default_b_initializer(),
      }
  
      self.regularizers = {"w": w_regularizer, "b": b_regularizer}
  
file_path: NiftyNet/niftynet/layer/deconvolution.py
imports: from __future__ import absolute_import, print_function
  import numpy
  import tensorflow
  from niftynet.layer import layer_util
  from niftynet.layer.activation import ActiLayer
  from niftynet.layer.base_layer import TrainableLayer
  from niftynet.layer.bn import BNLayer, InstanceNormLayer
  from niftynet.layer.gn import GNLayer
  from niftynet.utilities.util_common import look_up_operations
label_desc: Use image node_id 1 to create a new DeconvolutionalLayer object from inherited base classes: TrainableLayer with example: obj = DeconvolutionalLayer(n_output_chns, kernel_size, stride, padding, with_bias, feature_normalization, group_size, acti_func, w_initializer, w_regularizer, b_initializer, b_regularizer, moving_decay, eps, name)