code: def forward(self, h1, h2, h3, h4, c1, c2):
      c_x1 = c1.expand_as(h1).contiguous()
      c_x2 = c2.expand_as(h2).contiguous()
  
      # positive
      sc_1 = self.fn(h2, c_x1).squeeze(1)
      sc_2 = self.fn(h1, c_x2).squeeze(1)
  
      # negative
      sc_3 = self.fn(h4, c_x1).squeeze(1)
      sc_4 = self.fn(h3, c_x2).squeeze(1)
  
      logits = th.cat((sc_1, sc_2, sc_3, sc_4))
  
      return logits
  
file_path: dgl/examples/pytorch/mvgrl/node/model.py
imports: import torch
  import torch.nn
  from dgl.nn.pytorch import GraphConv
  from dgl.nn.pytorch.glob import AvgPooling
label_desc: Use image node_id 2 for calling the Discriminator obj's underlying member method code with example usage: obj.forward(h1, h2, h3, h4, c1, c2) and returns: logits