class_docstr: LightGCN is a GCN-based recommender model.
  
  LightGCN includes only the most essential component in GCN — neighborhood aggregation — for
  collaborative filtering. Specifically, LightGCN learns user and item embeddings by linearly
  propagating them on the user-item interaction graph, and uses the weighted sum of the embeddings
  learned at all layers as the final embedding.
  
  We implement the model following the original author with a pairwise training mode.
code: def __init__(self, config, dataset):
      super(LightGCN, self).__init__(config, dataset)
  
      # load dataset info
      self.interaction_matrix = dataset.inter_matrix(form="coo").astype(
          np.float32
      )
  
      # load parameters info
      self.latent_dim = config[
          "embedding_size"
      ]  # int type:the embedding size of lightGCN
      self.n_layers = config[
          "n_layers"
      ]  # int type:the layer num of lightGCN
      self.reg_weight = config[
          "reg_weight"
      ]  # float32 type: the weight decay for l2 normalization
      self.require_pow = config["require_pow"]
  
      # define layers and loss
      self.user_embedding = torch.nn.Embedding(
          num_embeddings=self.n_users, embedding_dim=self.latent_dim
      )
      self.item_embedding = torch.nn.Embedding(
          num_embeddings=self.n_items, embedding_dim=self.latent_dim
      )
      self.mf_loss = BPRLoss()
      self.reg_loss = EmbLoss()
  
      # storage variables for full sort evaluation acceleration
      self.restore_user_e = None
      self.restore_item_e = None
  
      # generate intermediate data
      self.norm_adj_matrix = self.get_norm_adj_mat().to(self.device)
  
      # parameters initialization
      self.apply(xavier_uniform_initialization)
      self.other_parameter_name = ["restore_user_e", "restore_item_e"]
  
file_path: RecBole/recbole/model/general_recommender/lightgcn.py
imports: import numpy
  import scipy.sparse
  import torch
  from recbole.model.abstract_recommender import GeneralRecommender
  from recbole.model.init import xavier_uniform_initialization
  from recbole.model.loss import BPRLoss, EmbLoss
  from recbole.utils import InputType
label_desc: Use image node_id 1 to create a new LightGCN object from inherited base classes: GeneralRecommender with example: obj = LightGCN(config, dataset)