code: def test_per_sample_gaussian_blur():
      for dev in ["cpu", "gpu"]:
          for shape, layout, axes in shape_layout_axes_cases:
              for sigma_dim in [None, 1, axes]:
                  for window_size_dim in [None, 1, axes]:
                      if sigma_dim is None and window_size_dim is None:
                          continue
                      yield (
                          check_per_sample_gaussian_blur,
                          10,
                          sigma_dim,
                          window_size_dim,
                          shape,
                          layout,
                          axes,
                          dev,
                      )
  
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 20 for calling a global function with example usage: test_per_sample_gaussian_blur() without return types