code: def test_free_static_axis_times_free_static_axis(
      output_rank, x_input_shape, x_data, y_input_shape, y_data
  ):
      x = C.input_variable(x_input_shape)
      y = C.input_variable(y_input_shape)
      t = C.times(x, y, output_rank=output_rank)
      cntk_result = t.eval({x: x_data, y: y_data})[0]
      np_result = []
      for x_item, y_item in zip(
          x_data, y_data
      ):  # zip over the batch axis
          item_res = np.tensordot(
              x_item, y_item, axes=len(x_item.shape) - output_rank
          )
          np_result.append(item_res)
      np_result = np.vstack(np_result)
      np.testing.assert_allclose(np_result, cntk_result)
  
imports: import numpy
  import pytest
  import cntk
  from cntk.ops.functions import Function, UserFunction
  from .ops_test_utils import AA
label_desc: Use image node_id 9 for calling a global function with example usage: test_free_static_axis_times_free_static_axis(output_rank, x_input_shape, x_data, y_input_shape, y_data) without return types