class_docstr:     mvgrl model
  Parameters
  -----------
  in_dim: int
      Input feature size.
  out_dim: int
      Output feature size.
  num_layers: int
      Number of the GNN encoder layers.
  Functions
  -----------
  forward(graph1, graph2, feat, edge_weight):
      graph1: DGLGraph
          The original graph
      graph2: DGLGraph
          The diffusion graph
      feat: tensor
          Node features
      edge_weight: tensor
          Edge weight of the diffusion graph
class_docstr_tok: ["mvgrl","model","Parameters","--","--","--","--","--","-","in_dim",":","int","Input","feature","size",".","out_dim",":","int","Output","feature","size",".","num_layers",":","int","Number","of","the","GNN","encoder","layers",".","Functions","--","--","--","--","--","-","forward","(","graph1",",","graph2",",","feat",",","edge_weight",")",":","graph1",":","DGLGraph","The","original","graph","graph2",":","DGLGraph","The","diffusion","graph","feat",":","tensor","Node","features","edge_weight",":","tensor","Edge","weight","of","the","diffusion","graph"]
code: def __init__(self, in_dim, out_dim, num_layers):
      super(MVGRL, self).__init__()
      self.local_mlp = MLP(out_dim, out_dim)
      self.global_mlp = MLP(num_layers * out_dim, out_dim)
      self.encoder1 = GCN(in_dim, out_dim, num_layers, norm="both")
      self.encoder2 = GCN(in_dim, out_dim, num_layers, norm="none")
  
file_path: dgl/examples/pytorch/mvgrl/graph/model.py
imports: import torch
  import torch.nn
  from dgl.nn.pytorch import GraphConv
  from dgl.nn.pytorch.glob import SumPooling
  from utils import local_global_loss_
label_desc: Use image node_id 1 to create a new MVGRL object from inherited base classes: nn with example: obj = MVGRL(in_dim, out_dim, num_layers)