class_docstr: Video to Patch Embedding.
  
  Args:
      patch_size (List[int]): Patch token size.
      in_channels (int): Number of input channels. Default: 3
      embed_dim (int): Number of linear projection output channels. Default: 96.
      norm_layer (nn.Module, optional): Normalization layer. Default: None
docstr: Forward function.
docstr_tok: ["Forward","function","."]
code: def forward(self, x: Tensor) -> Tensor:
      """Forward function."""
      # padding
      _, _, t, h, w = x.size()
      pad_size = _compute_pad_size_3d((t, h, w), self.tuple_patch_size)
      x = F.pad(x, (0, pad_size[2], 0, pad_size[1], 0, pad_size[0]))
      x = self.proj(x)  # B C T Wh Ww
      x = x.permute(0, 2, 3, 4, 1)  # B T Wh Ww C
      if self.norm is not None:
          x = self.norm(x)
      return x
  
imports: from functools import partial
  from typing import Any, Callable, List, Optional, Tuple
  import torch
  import torch.nn.functional
  from torch import nn, Tensor
  from ...transforms._presets import VideoClassification
  from ...utils import _log_api_usage_once
  from .._api import register_model, Weights, WeightsEnum
  from .._meta import _KINETICS400_CATEGORIES
  from .._utils import _ovewrite_named_param, handle_legacy_interface
  from ..swin_transformer import PatchMerging, SwinTransformerBlock
label_desc: Use image node_id 2 for calling the PatchEmbed3d obj's underlying member method code with example usage: obj.forward(x) and returns: x