code: def __init__(
      self,
      num_embeddings: int,
      embedding_dim: int,
      r: int = 0,
      lora_alpha: int = 1,
      merge_weights: bool = True,
      **kwargs,
  ):
      nn.Embedding.__init__(
          self, num_embeddings, embedding_dim, **kwargs
      )
      LoRALayer.__init__(
          self,
          r=r,
          lora_alpha=lora_alpha,
          lora_dropout=0,
          merge_weights=merge_weights,
      )
      # Actual trainable parameters
      if r > 0:
          self.lora_A = nn.Parameter(
              self.weight.new_zeros((r, num_embeddings))
          )
          self.lora_B = nn.Parameter(
              self.weight.new_zeros((embedding_dim, r))
          )
          self.scaling = self.lora_alpha / self.r
          # Freezing the pre-trained weight matrix
          self.weight.requires_grad = False
      self.reset_parameters()
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  import math
  from torch.utils.checkpoint import checkpoint
  from typing import Dict
  import os
label_desc: Use image node_id 1 to create a new Embedding object from inherited base classes: nn, LoRALayer with example: obj = Embedding(num_embeddings, embedding_dim, r, lora_alpha, merge_weights)