code: def conv2d(
      x: torch.Tensor,
      filters: torch.Tensor,
      strides: Union[int, Tuple[int, int]],
      padding: Union[str, int, Sequence[Tuple[int, int]]],
      /,
      *,
      data_format: str = "NHWC",
      filter_format: str = "channel_last",
      x_dilations: Union[int, Tuple[int, int]] = 1,
      dilations: Union[int, Tuple[int, int]] = 1,
      bias: Optional[torch.Tensor] = None,
      out: Optional[torch.Tensor] = None,
  ) -> torch.Tensor:
      if data_format == "NHWC":
          x = x.permute(0, 3, 1, 2)
      if filter_format == "channel_last":
          filters = filters.permute(3, 2, 0, 1)
      x = _x_dil_before_conv(x, 2, x_dilations)
      x, padding = _pad_before_conv(
          x, filters, strides, padding, 2, dilations, "channel_first"
      )
      res = torch.nn.functional.conv2d(
          x, filters, bias, strides, padding, dilations
      )
      if data_format == "NHWC":
          return res.permute(0, 2, 3, 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 10 for calling a global function with example usage: conv2d() and returns: res, res