code: def _make_convolution_fn(rank, strides, padding, dilations):
      """Helper to create tf convolution op."""
      [
          _,
          rank,
          strides,
          padding,
          dilations,
      ] = convolution_util.prepare_conv_args(
          1, rank, strides, padding, dilations
      )
  
      def op(x, kernel):
          dtype = dtype_util.common_dtype(
              [x, kernel], dtype_hint=tf.float32
          )
          x = tf.convert_to_tensor(x, dtype=dtype, name="x")
          kernel = tf.convert_to_tensor(
              kernel, dtype=dtype, name="kernel"
          )
          return tf.nn.convolution(
              x,
              kernel,
              strides=strides,
              padding=padding,
              data_format="NHWC",
              dilations=dilations,
          )
  
      return lambda x, kernel: nn_util_lib.batchify_op(
          op, rank + 1, x, kernel
      )
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.experimental.nn import layers
  from tensorflow_probability.python.experimental.nn import variational_base
  from tensorflow_probability.python.experimental.nn.util import convolution_util
  from tensorflow_probability.python.experimental.nn.util import kernel_bias
  from tensorflow_probability.python.experimental.nn.util import utils
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
label_desc: Use image node_id 1 for calling a global function with example usage: _make_convolution_fn(rank, strides, padding, dilations) and returns: function, tf