code: def __init__(
      self,
      model,
      in_channels,
      hidden_channels,
      out_channels,
      concat=False,
  ):
      super().__init__()
      self.concat = concat
  
      if model == "GCN":
          self.conv1 = GCNConv(in_channels, hidden_channels)
      elif model == "SAGE":
          self.conv1 = SAGEConv(in_channels, hidden_channels)
      elif model == "GAT":
          self.conv1 = GATConv(in_channels, hidden_channels)
  
      if self.concat:
          self.lin0 = Linear(in_channels, hidden_channels)
          self.lin1 = Linear(2 * hidden_channels, hidden_channels)
  
      self.lin2 = Linear(hidden_channels, out_channels)
  
file_path: pytorch_geometric/examples/upfd.py
imports: import argparse
  import os.path
  import torch
  import torch.nn.functional
  from torch.nn import Linear
  from torch_geometric.datasets import UPFD
  from torch_geometric.loader import DataLoader
  from torch_geometric.nn import GATConv, GCNConv, SAGEConv, global_max_pool
  from torch_geometric.transforms import ToUndirected
label_desc: Use image node_id 1 to create a new Net object from inherited base classes: torch.nn with example: obj = Net(model, in_channels, hidden_channels, out_channels, concat)