code: def test_2d_shape(self):
      new_shape = (8, 7)
      n_splits = 2
      expected_shape = (2,) + new_shape + (2,)
      self.run_test(new_shape, n_splits, expected_shape, False)
  
      new_shape = (20, 18)
      n_splits = 2
      expected_shape = (2,) + new_shape + (2,)
      self.run_test(new_shape, n_splits, expected_shape, False)
  
      new_shape = (16, 16)
      n_splits = 2
      expected_shape = (2,) + new_shape + (2,)
      self.run_test(new_shape, n_splits, expected_shape, False)
  
      new_shape = (16, 16)
      n_splits = 4
      expected_shape = (2,) + new_shape + (1,)
      self.run_test(new_shape, n_splits, expected_shape, False)
  
file_path: NiftyNet/tests/additive_upsample_test.py
imports: from __future__ import absolute_import, print_function
  import tensorflow
  from niftynet.layer.additive_upsample import AdditiveUpsampleLayer
  from tests.niftynet_testcase import NiftyNetTestCase
label_desc: Use image node_id 3 for calling the AdditiveUpsampleTest obj's underlying member method code with example usage: obj.test_2d_shape() without return types