code: def __init__(self, input_dim, hidden_dim, output_dim, args):
      super(SkipLastGNN, self).__init__()
      self.args = args
      self.dropout = args.dropout
      self.num_layers = args.num_layers
  
      self.pre_mp = nn.Sequential(nn.Linear(input_dim, hidden_dim))
  
      conv_model = self.build_conv_model(args.model)
      self.convs = nn.ModuleList()
  
      if args.skip == "learnable":
          self.learnable_skip = nn.Parameter(
              torch.ones(self.num_layers, self.num_layers)
          )
  
      for l in range(args.num_layers):
          if args.skip == "all" or "learnable":
              hidden_input_dim = hidden_dim * (l + 1)
          elif args.skip == "last":
              hidden_input_dim = hidden_dim
          else:
              raise ValueError(f"Unknown skip option {args.skip}")
          self.convs.append(conv_model(hidden_input_dim, hidden_dim))
  
      post_input_dim = hidden_dim * (args.num_layers + 1)
      self.post_mp = nn.Sequential(
          nn.Linear(post_input_dim, hidden_dim),
          nn.Dropout(args.dropout),
          nn.LeakyReLU(0.1),
          nn.Linear(hidden_dim, output_dim),
      )
  
file_path: deepsnap/examples/graph_classification/skip_models.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  import torch_geometric.nn
  import torch_geometric.utils
label_desc: Use image node_id 1 to create a new SkipLastGNN object from inherited base classes: nn with example: obj = SkipLastGNN(input_dim, hidden_dim, output_dim, args)