code: def ref_depthwise_convolution_2d(
      x, w, b, base_axis, pad, stride, dilation, multiplier
  ):
      """implement depthwise convolution by using normal convolution
      with group = inmaps"""
      # insert second dimension to weights
      w = np.expand_dims(w, axis=1)
      y = []
  
      for xx in x.reshape((-1,) + x.shape[base_axis:]):
          groups = xx.shape[0]
          yy = refs.convolution_2d(
              xx, w, b, pad, stride, dilation, groups
          )
          y.append(yy[np.newaxis])
  
      y = np.vstack(y)
      return y.reshape(x.shape[:base_axis] + y.shape[1:])
  
file_path: nnabla/python/test/function/test_depthwise_convolution.py
imports: from __future__ import division
  import pytest
  import numpy
  import nnabla
  import nnabla.functions
  import nnabla.parametric_functions
  import refs
  from nbla_test_utils import list_context
  from nbla_test_utils import function_tester
label_desc: Use image node_id 2 for calling a global function with example usage: ref_depthwise_convolution_2d(x, w, b, base_axis, pad, stride, dilation, multiplier) and returns: y