class_docstr: Patch Embedding and Position Embedding
  Apply patch embedding and position embedding on input images.
  Attributes:
      patch_embddings: impl using a patch_size x patch_size Conv2D operation
      position_embddings: a parameter with len = num_patch + 1(for cls_token)
      cls_token: token insert to the patch feature for classification
      dropout: dropout for embeddings
code: def __init__(
      self,
      image_size=224,
      patch_size=16,
      in_channels=3,
      embed_dim=768,
      dropout=0.0,
  ):
      super().__init__()
      n_patches = (image_size // patch_size) * (
          image_size // patch_size
      )
  
      self.patch_embedding = nn.Conv2D(
          in_channels=in_channels,
          out_channels=embed_dim,
          kernel_size=patch_size,
          stride=patch_size,
      )
  
      self.position_embeddings = paddle.create_parameter(
          shape=[1, n_patches + 1, embed_dim],
          dtype="float32",
          default_initializer=paddle.nn.initializer.TruncatedNormal(
              std=0.02
          ),
      )
  
      self.cls_token = paddle.create_parameter(
          shape=[1, 1, embed_dim],
          dtype="float32",
          default_initializer=paddle.nn.initializer.Constant(0),
      )
  
      self.dropout = nn.Dropout(dropout)
  
imports: import copy
  import paddle
  import paddle.nn
  from disco_diffusion_ernievil_base.vit_b_16x.ernievil2.transformers.droppath import DropPath
label_desc: Use image node_id 1 to create a new PatchEmbedding object from inherited base classes: nn with example: obj = PatchEmbedding(image_size, patch_size, in_channels, embed_dim, dropout)