code: def test_adaptive_separable_convolution_forward_backward(
      seed, ctx, func_name, x_shape, kv_filter, kh_filter
  ):
      from nbla_test_utils import cap_ignore_region, function_tester
  
      rng = np.random.RandomState(seed)
  
      b, c, h, w = x_shape
      kv_shape = [b, kv_filter, h - kv_filter + 1, w - kh_filter + 1]
      kh_shape = [b, kh_filter, h - kv_filter + 1, w - kh_filter + 1]
  
      x = rng.randn(*x_shape)
      kv = rng.randn(*kv_shape)
      kh = rng.randn(*kh_shape)
      inputs = [x, kv, kh]
  
      backward = [True, True, True]
      function_tester(
          rng,
          F.adaptive_separable_convolution,
          ref_adaptive_separable_convolution,
          inputs,
          backward=backward,
          atol_f=1e-6,
          atol_b=3e-2,
          atol_accum=3e-2,
          dstep=1e-3,
          ctx=ctx,
          func_name=func_name,
      )
  
imports: import pytest
  import numpy
  import nnabla.functions
  from nbla_test_utils import list_context
label_desc: Use image node_id 2 for calling a global function with example usage: test_adaptive_separable_convolution_forward_backward(seed, ctx, func_name, x_shape, kv_filter, kh_filter) without return types