code: def make_identify_dilated_conv_tests(options):
      """Make a set of tests to do dilated convolution."""
  
      test_parameters = [
          {
              "input_shape": [[1, 3, 4, 3], [4, 6, 6, 1]],
              "filter_shape": [[1, 1], [2, 3], [3, 3]],
              "strides": [[1, 1, 1, 1], [1, 2, 3, 1]],
              "dilations": [[1, 3, 2, 1], [1, 2, 2, 1], [1, 2, 1, 1]],
              "padding": ["VALID", "SAME"],
              "data_format": ["NHWC"],
              "constant_filter": [True, False],
              "channel_multiplier": [1, 2],
          },
      ]
  
      def get_tensor_shapes(parameters):
          input_shape = parameters["input_shape"]
          filter_size = parameters["filter_shape"]
          filter_shape = filter_size + [
              input_shape[3],
              parameters["channel_multiplier"],
          ]
          return [input_shape, filter_shape]
  
      def build_graph(parameters):
          """Build a conv graph given `parameters`."""
          input_shape, filter_shape = get_tensor_shapes(parameters)
          input_tensor = tf.compat.v1.placeholder(
              dtype=tf.float32, name="input", shape=input_shape
          )
  
          # Get filter input either as a placeholder or constants. Also get a list of
          # the input tensors that are represented as placeholders.
          if parameters["constant_filter"]:
              filter_input = create_tensor_data(
                  np.float32, filter_shape, min_value=-10, max_value=10
              )
              input_tensors = [input_tensor]
          else:
              filter_input = tf.compat.v1.placeholder(
                  dtype=tf.float32, name="filter", shape=filter_shape
              )
              input_tensors = [input_tensor, filter_input]
  
          # Use `tf.nn.convolution` here since it will create the `batch_to_space` and
          # the `space_to_batch` ops respectively.
          out = tf.nn.convolution(
              input=input_tensor,
              filters=filter_input,
              strides=parameters["strides"],
              dilations=parameters["dilations"],
              padding=parameters["padding"],
              data_format=parameters["data_format"],
          )
          return input_tensors, [out]
  
      def build_inputs(parameters, sess, inputs, outputs):
          # Build list of input values either containing 1 tensor (input) or 2 tensors
          # (input, filter) based on whether filter is constant or variable input.
          input_shape, filter_shape = get_tensor_shapes(parameters)
          values = [
              create_tensor_data(
                  np.float32, input_shape, min_value=-1, max_value=1
              )
          ]
          if not parameters["constant_filter"]:
              values.append(
                  create_tensor_data(np.float32, filter_shape)
              )
          return values, sess.run(
              outputs, feed_dict=dict(zip(inputs, values))
          )
  
      make_zip_of_tests(
          options,
          test_parameters,
          build_graph,
          build_inputs,
          expected_tf_failures=168,
      )
  
imports: import numpy
  import tensorflow
  from tensorflow.lite.testing.zip_test_utils import create_tensor_data
  from tensorflow.lite.testing.zip_test_utils import make_zip_of_tests
  from tensorflow.lite.testing.zip_test_utils import register_make_test_function
label_desc: Use image node_id 1 for calling a global function with example usage: make_identify_dilated_conv_tests(options) and returns: list, input_tensors,  list, values,  sess