code: def check_generic_gaussian_blur(
      batch_size,
      sigma,
      window_size,
      shape,
      layout,
      axes,
      op_type="cpu",
      in_dtype=np.uint8,
      out_dtype=types.NO_TYPE,
      random_shape=True,
  ):
      pipe = Pipeline(batch_size=batch_size, num_threads=4, device_id=0)
      min_shape = None if random_shape else shape
      data = RandomlyShapedDataIterator(
          batch_size,
          min_shape=min_shape,
          max_shape=shape,
          dtype=in_dtype,
      )
      # Extract the numpy type from DALI, we can have float32 or the same as input
      if out_dtype == types.NO_TYPE:
          out_dtype = None
          result_type = in_dtype
      elif dali_type(in_dtype) == out_dtype:
          result_type = in_dtype
      else:
          result_type = np.float32
      with pipe:
          input = fn.external_source(data, layout=layout)
          if op_type == "gpu":
              input = input.gpu()
          blurred = fn.gaussian_blur(
              input,
              device=op_type,
              sigma=sigma,
              window_size=window_size,
              dtype=out_dtype,
          )
          pipe.set_outputs(blurred, input)
      pipe.build()
  
      for _ in range(test_iters):
          result, input = pipe.run()
          if op_type == "gpu":
              result = result.as_cpu()
              input = input.as_cpu()
          input = to_batch(input, batch_size)
          skip_axes = count_skip_axes(layout)
          baseline = [
              gaussian_baseline(
                  img,
                  sigma,
                  window_size,
                  axes,
                  skip_axes,
                  dtype=result_type,
              )
              for img in input
          ]
          max_error = 1 if result_type != np.float32 else 1e-04
          check_batch(
              result,
              baseline,
              batch_size,
              max_allowed_error=max_error,
              expected_layout=layout,
          )
  
imports: from nvidia.dali.pipeline import Pipeline, pipeline_def
  import nvidia.dali.types
  import nvidia.dali.fn
  import numpy
  import cv2
  from scipy.ndimage import convolve1d
  import os
  from nose_utils import assert_raises, raises
  from nose.plugins.attrib import attr
  from sequences_test_utils import video_suite_helper, ArgCb
  from test_utils import get_dali_extra_path, check_batch, compare_pipelines, RandomlyShapedDataIterator, dali_type
label_desc: Use image node_id 14 for calling a global function with example usage: check_generic_gaussian_blur(batch_size, sigma, window_size, shape, layout, axes, op_type, in_dtype, out_dtype, random_shape) without return types