code: def upsample_and_concat(inputs, inputs2, strides=(2, 2, 2)):
      """Upsampling and concatenation layer according to [1].
  
      [1] O. Ronneberger et al. U-Net: Convolutional Networks for Biomedical Image
          Segmentation. MICCAI 2015.
  
      Args:
          inputs (TYPE): Input features to be upsampled.
          inputs2 (TYPE): Higher resolution features from the encoder to
              concatenate.
          strides (tuple, optional): Upsampling factor for a strided transpose
              convolution.
  
      Returns:
          tf.Tensor: Upsampled feature tensor
      """
      assert (
          len(inputs.get_shape().as_list()) == 5
      ), "inputs are required to have a rank of 5."
      assert len(inputs.get_shape().as_list()) == len(
          inputs2.get_shape().as_list()
      ), "Ranks of input and input2 differ"
  
      # Upsample inputs
      inputs = linear_upsample_3d(inputs, strides)
  
      return tf.concat(axis=-1, values=[inputs2, inputs])
  
file_path: DLTK/dltk/networks/segmentation/unet.py
imports: from __future__ import unicode_literals
  from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import tensorflow
  from dltk.core.residual_unit import vanilla_residual_unit_3d
  from dltk.core.upsample import linear_upsample_3d
  from dltk.core.activations import leaky_relu
label_desc: Use image node_id 1 for calling a global function with example usage: upsample_and_concat(inputs, inputs2, strides) and returns: tf