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 forward(self):
      all_embeddings = self.get_ego_embeddings()
      embeddings_list = [all_embeddings]
  
      for layer_idx in range(self.n_layers):
          all_embeddings = torch.sparse.mm(
              self.norm_adj_matrix, all_embeddings
          )
          embeddings_list.append(all_embeddings)
      lightgcn_all_embeddings = torch.stack(embeddings_list, dim=1)
      lightgcn_all_embeddings = torch.mean(
          lightgcn_all_embeddings, dim=1
      )
  
      user_all_embeddings, item_all_embeddings = torch.split(
          lightgcn_all_embeddings, [self.n_users, self.n_items]
      )
      return user_all_embeddings, item_all_embeddings
  
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 4 for calling the LightGCN obj's underlying member method code with example usage: obj.forward() and returns: user_all_embeddings,  item_all_embeddings