code: def forward(self, graph):
      # (batch of) graph object(s) containing all the tensors we want
      x = F.dropout(graph.node_feature, p=0.2, training=self.training)
      x = F.relu(self._conv_op(self.conv1, x, graph))
      x = F.dropout(x, p=0.2, training=self.training)
      x = self._conv_op(self.conv2, x, graph)
  
      nodes_first = torch.index_select(
          x, 0, graph.edge_label_index[0, :].long()
      )
      nodes_second = torch.index_select(
          x, 0, graph.edge_label_index[1, :].long()
      )
      pred = torch.sum(nodes_first * nodes_second, dim=-1)
      # pred = torch.nn.CosineSimilarity(dim=-1)(nodes_first, nodes_second)
      # pred = torch.sigmoid(pred)
      return pred
  
imports: import sys
  import argparse
  from converter import *
  import copy
  import math
  import time
  import numpy
  from sklearn.metrics import *
  import torch
  import torch.nn.functional
  from torch.utils.data import DataLoader
  from torch_geometric.datasets import Planetoid
  from torch_geometric.datasets import TUDataset
  import torch_geometric.transforms
  import torch_geometric.nn
  from deepsnap.graph import Graph
  from deepsnap.dataset import GraphDataset
  from deepsnap.batch import Batch
  import pdb
label_desc: Use image node_id 2 for calling the Net obj's underlying member method code with example usage: obj.forward(graph) and returns: pred