code: def test_upscale_layer(self):
      input_value = np.array(
          [
              [1, 2, 3, 4],
              [5, 6, 7, 8],
          ]
      ).reshape((1, 2, 4, 1))
      expected_output = np.array(
          [
              [1, 1, 2, 2, 3, 3, 4, 4],
              [1, 1, 2, 2, 3, 3, 4, 4],
              [1, 1, 2, 2, 3, 3, 4, 4],
              [5, 5, 6, 6, 7, 7, 8, 8],
              [5, 5, 6, 6, 7, 7, 8, 8],
              [5, 5, 6, 6, 7, 7, 8, 8],
          ]
      ).reshape((1, 6, 8, 1))
  
      upscale_layer = layers.Upscale((3, 2))
      network = layers.join(layers.Input((2, 4, 1)), upscale_layer)
      self.assertShapesEqual(network.output_shape, (None, 6, 8, 1))
  
      actual_output = self.eval(network.output(asfloat(input_value)))
      np.testing.assert_array_almost_equal(
          asfloat(expected_output), actual_output
      )
  
imports: from collections import namedtuple
  import numpy
  import tensorflow
  from neupy import layers
  from neupy.utils import asfloat
  from neupy.exceptions import LayerConnectionError
  from neupy.layers.pooling import pooling_output_shape
  from base import BaseTestCase
label_desc: Use image node_id 3 for calling the UpscaleLayersTestCase obj's underlying member method code with example usage: obj.test_upscale_layer() without return types