code: def conv3d(
      x: Union[tf.Tensor, tf.Variable],
      filters: Union[tf.Tensor, tf.Variable],
      strides: Union[int, Tuple[int, int, int]],
      padding: Union[str, int, Sequence[Tuple[int, int]]],
      /,
      *,
      data_format: str = "NDHWC",
      filter_format: str = "channel_last",
      x_dilations: Union[int, Tuple[int, int, int]] = 1,
      dilations: Union[int, Tuple[int, int, int]] = 1,
      bias: Optional[Union[tf.Tensor, tf.Variable]] = None,
      out: Optional[Union[tf.Tensor, tf.Variable]] = None,
  ):
      permuted_x = False
      if data_format == "NCDHW" and ivy.dev(x) == "cpu":
          x = tf.transpose(x, (0, 2, 3, 4, 1))
          data_format = "NDHWC"
          permuted_x = True
      if filter_format == "channel_first":
          filters = tf.transpose(filters, (2, 3, 4, 1, 0))
      x = _x_dil_before_conv(x, 3, x_dilations, data_format)
      x, padding = _pad_before_conv(x, padding, 3, data_format)
      strides, dilations = _extend_3d_strides_dilations(
          strides, dilations, data_format
      )
      res = tf.nn.conv3d(
          x, filters, strides, padding, data_format, dilations
      )
      if bias is not None:
          if data_format[1] == "C":
              bias = tf.reshape(bias, [1, -1, 1, 1, 1])
          res = tf.math.add(res, bias)
      if permuted_x:
          return tf.transpose(res, (0, 4, 1, 2, 3))
      return res
  
imports: from typing import Optional, Tuple, Union, Sequence
  import tensorflow
  from tensorflow.python.types.core import Tensor
  import ivy
  from ivy.func_wrapper import with_supported_dtypes, with_unsupported_dtypes
  from .None import backend_version
  from ivy.functional.ivy.layers import _deconv_length, _get_x_data_format
label_desc: Use image node_id 12 for calling a global function with example usage: conv3d() and returns: res, tf