class_docstr: 3D patch embedding for video.
  
  Args:
      patch_size (`int`):
          Patch token size.
      c (`int`):
          Number of input video channels..
      embed_dim (`int`):
          Number of linear projection output channels.
      norm_layer (`nn.Module`):
          Normalization layer.
      stride (`tuple[int]`):
          Stride size.
class_docstr_tok: ["3D","patch","embedding","for","video",".","Args",":","patch_size","(","`","int","`",")",":","Patch","token","size",".","c","(","`","int","`",")",":","Number","of","input","video","channels","..","embed_dim","(","`","int","`",")",":","Number","of","linear","projection","output","channels",".","norm_layer","(","`","nn.Module","`",")",":","Normalization","layer",".","stride","(","`","tuple","[","int","]","`",")",":","Stride","size","."]
code: def __init__(
      self,
      patch_size=(2, 4, 4),
      c=3,
      embed_dim=96,
      norm_layer=None,
      additional_variable_channels=None,
      stride=None,
  ):
      super().__init__()
      self.patch_size = patch_size
      self.c = c
      self.embed_dim = embed_dim
      self.additional_variable_channels = additional_variable_channels
  
      if not stride:
          self.proj = nn.Conv3d(
              c, embed_dim, kernel_size=patch_size, stride=patch_size
          )
      else:
          self.proj = nn.Conv3d(
              c, embed_dim, kernel_size=patch_size, stride=stride
          )
      if additional_variable_channels:
          # we create var_proj separately from proj
          # this makes it convenient to ignore var_proj on downstream tasks
          # where we only use RGB
          if not stride:
              self.var_proj = [
                  nn.Conv3d(
                      x,
                      embed_dim,
                      kernel_size=patch_size,
                      stride=patch_size,
                  )
                  for x in additional_variable_channels
              ]
          else:
              self.var_proj = [
                  nn.Conv3d(
                      x,
                      embed_dim,
                      kernel_size=patch_size,
                      stride=stride,
                  )
                  for x in additional_variable_channels
              ]
          self.var_proj = nn.ModuleList(self.var_proj)
  
      if norm_layer is not None:
          self.norm = norm_layer(embed_dim)
      else:
          self.norm = None
  
imports: from torch import nn
  import torch.nn.functional
label_desc: Use image node_id 1 to create a new PatchEmbed3D object from inherited base classes: nn with example: obj = PatchEmbed3D(patch_size, c, embed_dim, norm_layer, additional_variable_channels, stride)