class_docstr: Graph Convolutional Network
class_docstr_tok: ["Graph","Convolutional","Network"]
code: def __init__(
      self,
      embedding_size,
      n_hops,
      n_users,
      n_factors,
      n_relations,
      edge_index,
      edge_type,
      interact_mat,
      ind,
      tmp,
      device,
      node_dropout_rate=0.5,
      mess_dropout_rate=0.1,
  ):
      super(GraphConv, self).__init__()
  
      self.embedding_size = embedding_size
      self.n_hops = n_hops
      self.n_relations = n_relations
      self.n_users = n_users
      self.n_factors = n_factors
      self.edge_index = edge_index
      self.edge_type = edge_type
      self.interact_mat = interact_mat
      self.node_dropout_rate = node_dropout_rate
      self.mess_dropout_rate = mess_dropout_rate
      self.ind = ind
      self.temperature = tmp
      self.device = device
  
      # define layers
      self.relation_embedding = nn.Embedding(
          self.n_relations, self.embedding_size
      )
      disen_weight_att = nn.init.xavier_uniform_(
          torch.empty(n_factors, n_relations)
      )
      self.disen_weight_att = nn.Parameter(disen_weight_att)
      self.convs = nn.ModuleList()
      for i in range(self.n_hops):
          self.convs.append(Aggregator())
      self.node_dropout = SparseDropout(
          p=self.mess_dropout_rate
      )  # node dropout
      self.mess_dropout = nn.Dropout(
          p=self.mess_dropout_rate
      )  # mess dropout
  
      # parameters initialization
      self.apply(xavier_uniform_initialization)
  
imports: import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  import scipy.sparse
  from recbole.model.abstract_recommender import KnowledgeRecommender
  from recbole.model.init import xavier_uniform_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 1 to create a new GraphConv object from inherited base classes: nn with example: obj = GraphConv(embedding_size, n_hops, n_users, n_factors, n_relations, edge_index, edge_type, interact_mat, ind, tmp, device, node_dropout_rate, mess_dropout_rate)