code: def forward(self, data):
      x, edge_index, batch = (
          data.node_feature,
          data.edge_index,
          data.batch,
      )
      x = self.pre_mp(x)
      num_nodes = x.size(0)
  
      # [num nodes x current num layer x hidden_dim]
      all_emb = x.unsqueeze(1)
      # [num nodes x (curr num layer * hidden_dim)]
      emb = x
      for i in range(len(self.convs)):
          if self.args.skip == "learnable":
              skip_vals = (
                  self.learnable_skip[i, : i + 1]
                  .unsqueeze(0)
                  .unsqueeze(-1)
              )
              curr_emb = all_emb * torch.sigmoid(skip_vals)
              curr_emb = curr_emb.view(num_nodes, -1)
              x = self.convs[i](curr_emb, edge_index)
          if self.args.skip == "all" or self.args.skip == "learnable":
              x = self.convs[i](emb, edge_index)
          else:
              x = self.convs[i](x, edge_index)
          x = F.relu(x)
          x = F.dropout(x, p=self.dropout, training=self.training)
          emb = torch.cat((emb, x), 1)
          if self.args.skip == "learnable":
              all_emb = torch.cat((all_emb, x.unsqueeze(1)), 1)
  
      # x = pyg_nn.global_mean_pool(x, batch)
      emb = pyg_nn.global_add_pool(emb, batch)
      emb = self.post_mp(emb)
      out = F.log_softmax(emb, dim=1)
      return out
  
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 3 for calling the SkipLastGNN obj's underlying member method code with example usage: obj.forward(data) and returns: out