code: def layer_op(self, thru_tensor, is_training):
      for kernel_size, n_features in zip(self.kernels, self.n_chns):
          # no activation before final 1x1x1 conv layer
          acti_func = self.acti_func if kernel_size > 1 else None
          feature_normalization = (
              "instance" if acti_func is not None else None
          )
  
          conv_op = ConvolutionalLayer(
              n_output_chns=n_features,
              kernel_size=kernel_size,
              w_initializer=self.initializers["w"],
              w_regularizer=self.regularizers["w"],
              acti_func=acti_func,
              name="{}".format(n_features),
              feature_normalization=feature_normalization,
          )
          thru_tensor = conv_op(thru_tensor, is_training)
  
      if self.with_downsample_branch:
          branch_output = thru_tensor
      else:
          branch_output = None
  
      if self.func == "DOWNSAMPLE":
          downsample_op = DownSampleLayer(
              "MAX", kernel_size=2, stride=2, name="down_2x2"
          )
          thru_tensor = downsample_op(thru_tensor)
      elif self.func == "UPSAMPLE":
          up_shape = [2 * int(thru_tensor.shape[i]) for i in (1, 2, 3)]
          upsample_op = LinearResizeLayer(up_shape)
          thru_tensor = upsample_op(thru_tensor)
  
      elif self.func == "NONE":
          pass  # do nothing
      return thru_tensor, branch_output
  
file_path: NiftyNet/niftynet/network/no_new_net.py
imports: from __future__ import absolute_import, print_function
  from niftynet.layer import layer_util
  from niftynet.layer.base_layer import TrainableLayer
  from niftynet.layer.convolution import ConvolutionalLayer
  from niftynet.layer.deconvolution import DeconvolutionalLayer
  from niftynet.layer.downsample import DownSampleLayer
  from niftynet.layer.elementwise import ElementwiseLayer
  from niftynet.layer.crop import CropLayer
  from niftynet.layer.linear_resize import LinearResizeLayer
  from niftynet.utilities.util_common import look_up_operations
label_desc: Use image node_id 2 for calling the UNetBlock obj's underlying member method code with example usage: obj.layer_op(thru_tensor, is_training) and returns: thru_tensor,  branch_output