code: def test_max_unpooling_free_static_axes(
      warmup_input_size,
      second_input_size,
      pooling_window,
      strides,
      device_id,
      precision,
  ):
      dt = PRECISION_TO_TYPE[precision]
      dev = cntk_device(device_id)
  
      # Exercise operation twice - once with warmup input, second time to get the test output.
      x = C.input_variable(
          (
              warmup_input_size[0:2]
              + tuple([C.FreeDimension] * (len(warmup_input_size) - 2))
          )
      )
      y = C.pooling(x, C.MAX_POOLING, pooling_window, strides)
      z = C.unpooling(y, x, C.MAX_UNPOOLING, pooling_window, strides)
  
      x_data_warmup = np.arange(np.prod(warmup_input_size), dtype=dt)
      x_data_warmup = x_data_warmup.reshape(warmup_input_size)
      output_warmup = z.eval({x: x_data_warmup}, device=dev)
  
      x_data_test = np.arange(np.prod(second_input_size), dtype=dt)
      x_data_test = x_data_test.reshape(second_input_size)
      output_test = z.eval({x: x_data_test}, device=dev)
  
      # Generate reference output using fixed axes.
      x_ref = C.input_variable(second_input_size)
      y_ref = C.pooling(x_ref, C.MAX_POOLING, pooling_window, strides)
      z_ref = C.unpooling(
          y_ref, x_ref, C.MAX_UNPOOLING, pooling_window, strides
      )
      output_ref = z_ref.eval({x_ref: x_data_test}, device=dev)
  
      assert np.allclose(output_test, output_ref, atol=1e-4)
  
imports: from __future__ import division
  import numpy
  import pytest
  import cntk
  from .ops_test_utils import unittest_helper, _test_unary_op, AA, precision, PRECISION_TO_TYPE, constant, cntk_device
  from cntk.ops import AVG_POOLING, MAX_POOLING, MAX_UNPOOLING
  from cntk.internal import sanitize_dtype_cntk
  from cntk.cntk_py import should_force_deterministic_algorithms
label_desc: Use image node_id 27 for calling a global function with example usage: test_max_unpooling_free_static_axes(warmup_input_size, second_input_size, pooling_window, strides, device_id, precision) without return types