code: def conv2d_transpose(
      x: torch.Tensor,
      filters: torch.Tensor,
      strides: Union[int, Tuple[int, int]],
      padding: Union[str, int, Sequence[Tuple[int, int]]],
      /,
      *,
      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[torch.Tensor] = None,
      out: Optional[torch.Tensor] = None,
  ):
      if data_format == "NHWC":
          x = x.permute(0, 3, 1, 2)
      if filter_format == "channel_last":
          filters = filters.permute(3, 2, 0, 1)
      (
          not_valid_pad,
          symmetric_padding,
          output_padding,
      ) = _tranpose_padding(
          x.shape[2:],
          filters.shape[2:],
          strides,
          padding,
          2,
          dilations,
          output_shape,
          data_format,
      )
      res = torch.nn.functional.conv_transpose2d(
          x,
          filters,
          bias,
          strides,
          symmetric_padding,
          dilation=dilations,
          output_padding=output_padding,
      )
      if not_valid_pad[0]:
          res = res[..., :-1, :]
      if not_valid_pad[1]:
          res = res[..., :-1]
      if data_format == "NHWC":
          res = res.permute(0, *range(2, 4), 1)
      return res
  
imports: from typing import Optional, Tuple, Union, Sequence
  import torch
  import ivy
  from ivy.func_wrapper import with_unsupported_dtypes, with_supported_dtypes
  from .None import backend_version
  from ivy.functional.ivy.layers import _get_embed_dim, _handle_padding, _deconv_length
label_desc: Use image node_id 12 for calling a global function with example usage: conv2d_transpose() and returns: res