class_docstr: MCCLK is a knowledge-based recommendation model.
  It focuses on the contrastive learning in KG-aware recommendation and proposes a novel multi-level cross-view
  contrastive learning mechanism. This model comprehensively considers three different graph views for KG-aware
  recommendation, including global-level structural view, local-level collaborative and semantic views. It hence
  performs contrastive learning across three views on both local and global levels, mining comprehensive graph
  feature and structure information in a self-supervised manner.
class_docstr_tok: ["MCCLK","is","a","knowledge-based","recommendation","model",".","It","focuses","on","the","contrastive","learning","in","KG-aware","recommendation","and","proposes","a","novel","multi-level","cross-view","contrastive","learning","mechanism",".","This","model","comprehensively","considers","three","different","graph","views","for","KG-aware","recommendation",",","including","global-level","structural","view",",","local-level","collaborative","and","semantic","views",".","It","hence","performs","contrastive","learning","across","three","views","on","both","local","and","global","levels",",","mining","comprehensive","graph","feature","and","structure","information","in","a","self-supervised","manner","."]
code: def light_gcn(self, user_embedding, item_embedding, adj):
      ego_embeddings = torch.cat(
          (user_embedding, item_embedding), dim=0
      )
      all_embeddings = [ego_embeddings]
      for i in range(self.lightgcn_layer):
          side_embeddings = torch.sparse.mm(adj, ego_embeddings)
          ego_embeddings = side_embeddings
          all_embeddings += [ego_embeddings]
      all_embeddings = torch.stack(all_embeddings, dim=1)
      all_embeddings = all_embeddings.mean(dim=1, keepdim=False)
      u_g_embeddings, i_g_embeddings = torch.split(
          all_embeddings, [self.n_users, self.n_entities], dim=0
      )
      return u_g_embeddings, i_g_embeddings
  
imports: import numpy
  import scipy.sparse
  import torch
  import torch.nn
  import torch.nn.functional
  from recbole.model.abstract_recommender import KnowledgeRecommender
  from recbole.model.init import xavier_normal_initialization
  from recbole.model.layers import SparseDropout
  from recbole.model.loss import BPRLoss, EmbLoss
  from recbole.utils import InputType
label_desc: Use image node_id 5 for calling the MCCLK obj's underlying member method code with example usage: obj.light_gcn(user_embedding, item_embedding, adj) and returns: u_g_embeddings,  i_g_embeddings