code: def main(args):
      # load and preprocess dataset
      args.dataset = "reddit-self-loop"
      data = load_data(args)
      g = data[0]
      if args.gpu < 0:
          cuda = False
      else:
          cuda = True
          g = g.int().to(args.gpu)
  
      features = g.ndata["feat"]
      labels = g.ndata["label"]
      train_mask = g.ndata["train_mask"]
      val_mask = g.ndata["val_mask"]
      test_mask = g.ndata["test_mask"]
      in_feats = features.shape[1]
      n_classes = data.num_classes
      n_edges = g.num_edges()
      print(
          """----Data statistics------'
        #Edges %d
        #Classes %d
        #Train samples %d
        #Val samples %d
        #Test samples %d"""
          % (
              n_edges,
              n_classes,
              g.ndata["train_mask"].int().sum().item(),
              g.ndata["val_mask"].int().sum().item(),
              g.ndata["test_mask"].int().sum().item(),
          )
      )
  
      # graph preprocess and calculate normalization factor
      n_edges = g.num_edges()
      # normalization
      degs = g.in_degrees().float()
      norm = torch.pow(degs, -0.5)
      norm[torch.isinf(norm)] = 0
      g.ndata["norm"] = norm.unsqueeze(1)
  
      # create SGC model
      model = SGConv(
          in_feats,
          n_classes,
          k=2,
          cached=True,
          bias=True,
          norm=normalize,
      )
      if args.gpu >= 0:
          model = model.cuda()
  
      # use optimizer
      optimizer = torch.optim.LBFGS(model.parameters())
  
      # define loss closure
      def closure():
          optimizer.zero_grad()
          output = model(g, features)[train_mask]
          loss_train = F.cross_entropy(output, labels[train_mask])
          loss_train.backward()
          return loss_train
  
      # initialize graph
      for epoch in range(args.n_epochs):
          model.train()
          optimizer.step(closure)
  
      acc = evaluate(model, features, g, labels, test_mask)
      print("Test Accuracy {:.4f}".format(acc))
  
file_path: dgl/examples/pytorch/sgc/sgc_reddit.py
imports: import argparse
  import math
  import time
  import dgl.function
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl import DGLGraph
  from dgl.data import load_data, register_data_args
  from dgl.nn.pytorch.conv import SGConv
label_desc: Use image node_id 3 for calling a global function with example usage: main(args) and returns: loss_train