code: def conv2d_transpose(
      x: JaxArray,
      filters: JaxArray,
      strides: Union[int, Tuple[int, int]],
      padding: str,
      /,
      *,
      output_shape: Optional[
          Union[ivy.NativeShape, Sequence[int]]
      ] = None,
      filter_format: str = "channel_last",
      data_format: str = "NHWC",
      dilations: Union[int, Tuple[int, int]] = 1,
      bias: Optional[JaxArray] = None,
      out: Optional[JaxArray] = None,
  ) -> JaxArray:
      strides = [strides] * 2 if isinstance(strides, int) else strides
      dilations = (
          [dilations] * 2 if isinstance(dilations, int) else dilations
      )
      if data_format == "NHWC":
          x_shape = list(x.shape[1:3])
      else:
          x_shape = list(x.shape[2:])
      if filter_format == "channel_first":
          filters = jnp.transpose(filters, (2, 3, 1, 0))
      padding = _get_tranpose_padding(
          x_shape,
          filters.shape,
          strides,
          padding,
          2,
          dilations,
          output_shape,
      )
  
      res = jlax.conv_transpose(
          x,
          filters,
          strides,
          padding,
          dilations,
          (data_format, "HWIO", data_format),
          True,
      )
      if bias is not None:
          if data_format == "NHWC":
              return jnp.add(res, bias)
          return jnp.add(res, bias[(None,) + (...,) + (None,) * 2])
      return res
  
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 7 for calling a global function with example usage: conv2d_transpose() and returns: res, jnp, jnp