code: def depthwise_conv2d(
      x: JaxArray,
      filters: JaxArray,
      strides: Union[int, Tuple[int, int]],
      padding: Union[str, int, Sequence[Tuple[int, int]]],
      /,
      *,
      data_format: str = "NHWC",
      dilations: Union[int, Tuple[int, int]] = 1,
      out: Optional[JaxArray] = None,
  ) -> JaxArray:
      strides = [strides] * 2 if isinstance(strides, int) else strides
      strides = (
          [strides[1], strides[2]] if len(strides) == 4 else strides
      )
      dilations = (
          [dilations] * 2 if isinstance(dilations, int) else dilations
      )
      if isinstance(padding, int):
          padding = [(padding, padding)] * 2
      filters = (
          jnp.squeeze(filters, 3) if filters.ndim == 4 else filters
      )
      cn = filters.shape[-1]
      filters = jnp.expand_dims(filters, -2)
      return jlax.conv_general_dilated(
          x,
          filters,
          strides,
          padding,
          None,
          dilations,
          (data_format, "HWIO", data_format),
          feature_group_count=cn,
      )
  
file_path: ivy/ivy/functional/backends/jax/layers.py
imports: import jax.lax
  import jax.numpy
  import ivy
  from ivy.functional.backends.jax import JaxArray
  from typing import Union, Tuple, Optional, Sequence
  from ivy.functional.ivy.layers import _handle_padding, _deconv_length, _get_x_data_format
label_desc: Use image node_id 8 for calling a global function with example usage: depthwise_conv2d() and returns: jlax