code: def __init__(self, d, num_nodes, num_rels, hidden=None, device="cpu"):
      super().__init__()
  
      nn, _, dglnn, _, torch, _, _ = lazy_import_networks()
      self.node_ids = torch.tensor(range(num_nodes))
  
      self.node_ids = self.node_ids.to(device)
      self.emb = nn.Embedding(num_nodes, d)
      hidden = d if not hidden else d + hidden
  
      # TODO: need to think something about the self loop
      self.rgc1 = dglnn.RelGraphConv(
          d, d, num_rels, regularizer="bdd", num_bases=d, self_loop=True
      )
      self.rgc2 = dglnn.RelGraphConv(
          hidden, d, num_rels, self_loop=True
      )
  
      self.dropout = nn.Dropout(0.2)
  
imports: from typing import TYPE_CHECKING, Any
  from .None import constants
  import logging
label_desc: Use image node_id 1 to create a new RGCNEmbed object from inherited base classes: Module with example: obj = RGCNEmbed(d, num_nodes, num_rels, hidden, device)