code: def main(args):
      if args.gpu < 0:
          device = "cpu"
      else:
          device = "cuda:{}".format(args.gpu)
  
      data = prepare_data(device, args)
      (
          feats,
          labels,
          train_feats,
          train_labels,
          in_size,
          num_classes,
          train_nid,
          val_nid,
          test_nid,
      ) = data
  
      model = Model(
          in_size,
          args.num_hidden,
          num_classes,
          args.R,
          args.ff_layer,
          args.dropout,
      )
      model = model.to(device)
      loss_fcn = nn.CrossEntropyLoss()
      optimizer = torch.optim.Adam(
          model.parameters(), lr=args.lr, weight_decay=args.weight_decay
      )
  
      best_epoch = 0
      best_val = 0
      best_test = 0
  
      for epoch in range(1, args.num_epochs + 1):
          start = time.time()
          model.train()
          loss = loss_fcn(model(train_feats), train_labels)
          optimizer.zero_grad()
          loss.backward()
          optimizer.step()
  
          if epoch % args.eval_every == 0:
              model.eval()
              acc = evaluate(
                  epoch,
                  args,
                  model,
                  feats,
                  labels,
                  train_nid,
                  val_nid,
                  test_nid,
              )
              end = time.time()
              log = "Epoch {}, Times(s): {:.4f}".format(
                  epoch, end - start
              )
              log += ", Accuracy: Train {:.4f}, Val {:.4f}, Test {:.4f}".format(
                  *acc
              )
              print(log)
              if acc[1] > best_val:
                  best_val = acc[1]
                  best_epoch = epoch
                  best_test = acc[2]
  
      print(
          "Best Epoch {}, Val {:.4f}, Test {:.4f}".format(
              best_epoch, best_val, best_test
          )
      )
  
imports: import argparse
  import os
  import time
  import dgl
  import dgl.function
  import torch
  import torch.nn
  import torch.nn.functional
  from dataset import load_dataset
label_desc: Use image node_id 5 for calling a global function with example usage: main(args) without return types