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
code: def __init__(
      self,
      patch_size: List[int],
      in_channels: int = 3,
      embed_dim: int = 96,
      norm_layer: Optional[Callable[..., nn.Module]] = None,
  ) -> None:
      super().__init__()
      _log_api_usage_once(self)
      self.tuple_patch_size = (
          patch_size[0],
          patch_size[1],
          patch_size[2],
      )
  
      self.proj = nn.Conv3d(
          in_channels,
          embed_dim,
          kernel_size=self.tuple_patch_size,
          stride=self.tuple_patch_size,
      )
      if norm_layer is not None:
          self.norm = norm_layer(embed_dim)
      else:
          self.norm = nn.Identity()
  
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 1 to create a new PatchEmbed3d object from inherited base classes: nn with example: obj = PatchEmbed3d(patch_size, in_channels, embed_dim, norm_layer)