code: def test_2d_shape(self):
      expected_shape = (2, 16, 16, 1)
      self._test_nd_output_shape(2, {}, expected_shape)
  
      params = {
          "n_output_chns": 16,
          "kernel_size": 5,
          "acti_func": "relu",
      }
      expected_shape = (2, 16, 16, 16)
      self._test_nd_output_shape(2, params, expected_shape)
  
      params = {
          "n_output_chns": 3,
          "kernel_size": 3,
          "acti_func": "prelu",
      }
      expected_shape = (2, 16, 16, 3)
      self._test_nd_output_shape(2, params, expected_shape)
  
      for type_str in connection_types:
          params = {"n_output_chns": 3, "type_string": type_str}
          expected_shape = (2, 16, 16, 3)
          self._test_nd_output_shape(2, params, expected_shape)
  
file_path: NiftyNet/tests/residual_unit_test.py
imports: from __future__ import absolute_import, print_function
  import tensorflow
  from niftynet.layer.residual_unit import ResidualUnit
  from niftynet.layer.residual_unit import SUPPORTED_OP
  from tests.niftynet_testcase import NiftyNetTestCase
label_desc: Use image node_id 5 for calling the ResidualUnitTest obj's underlying member method code with example usage: obj.test_2d_shape() without return types