class_docstr: Implementation of the upsampling layer with residual like connections,
  described in paper:
  
      Wojna et al., The devil is in the decoder,
      https://arxiv.org/abs/1707.05847
code: def __init__(
      self,
      kernel_size=3,
      stride=2,
      n_splits=2,
      w_initializer=None,
      w_regularizer=None,
      acti_func="relu",
      name="residual_additive_upsample",
  ):
      TrainableLayer.__init__(self, name=name)
      self.n_splits = n_splits
      self.deconv_param = {
          "w_initializer": w_initializer,
          "w_regularizer": w_regularizer,
          "kernel_size": kernel_size,
          "acti_func": acti_func,
          "stride": stride,
      }
  
file_path: NiftyNet/niftynet/layer/additive_upsample.py
imports: from __future__ import absolute_import, print_function
  import tensorflow
  from niftynet.layer.base_layer import Layer
  from niftynet.layer.base_layer import TrainableLayer
  from niftynet.layer.linear_resize import LinearResizeLayer
  from niftynet.layer.deconvolution import DeconvolutionalLayer
  from niftynet.layer.layer_util import check_divisible_channels
  from niftynet.layer.elementwise import ElementwiseLayer
label_desc: Use image node_id 1 to create a new ResidualUpsampleLayer object from inherited base classes: TrainableLayer with example: obj = ResidualUpsampleLayer(kernel_size, stride, n_splits, w_initializer, w_regularizer, acti_func, name)