class_docstr: Class responsible for embedding vertices. Vertex embeddings take
  the form of a tensor of size [N, D], where
      N = number of vertices
      D = number of dimensions in the embedding space
class_docstr_tok: ["Class","responsible","for","embedding","vertices",".","Vertex","embeddings","take","the","form","of","a","tensor","of","size","[","N",",","D","]",",","where","N","=","number","of","vertices","D","=","number","of","dimensions","in","the","embedding","space"]
docstr: Initialize embedder, set random embeddings
  
  Args:
      num_vertices (int): number of vertices to embed
      embed_dim (int): number of dimensions in the embedding space
docstr_tok: ["Initialize","embedder",",","set","random","embeddings","Args",":","num_vertices","(","int",")",":","number","of","vertices","to","embed","embed_dim","(","int",")",":","number","of","dimensions","in","the","embedding","space"]
code: def __init__(self, num_vertices: int, embed_dim: int):
      """
      Initialize embedder, set random embeddings
  
      Args:
          num_vertices (int): number of vertices to embed
          embed_dim (int): number of dimensions in the embedding space
      """
      super(VertexDirectEmbedder, self).__init__()
      self.embeddings = nn.Parameter(
          torch.Tensor(num_vertices, embed_dim)
      )
      self.reset_parameters()
  
file_path: detectron2/projects/DensePose/densepose/modeling/cse/vertex_direct_embedder.py
imports: import pickle
  import torch
  from torch import nn
  from detectron2.utils.file_io import PathManager
  from .utils import normalize_embeddings
label_desc: Use image node_id 1 to create a new VertexDirectEmbedder object from inherited base classes: nn with example: obj = VertexDirectEmbedder(num_vertices, embed_dim)