code: def __init__(self, in_feats, n_hidden, n_classes):
      super().__init__()
      self.save_hyperparameters()
      self.layers = nn.ModuleList()
      self.layers.append(dglnn.SAGEConv(in_feats, n_hidden, "mean"))
      self.layers.append(dglnn.SAGEConv(n_hidden, n_hidden, "mean"))
      self.layers.append(dglnn.SAGEConv(n_hidden, n_classes, "mean"))
      self.dropout = nn.Dropout(0.5)
      self.n_hidden = n_hidden
      self.n_classes = n_classes
      self.train_acc = Accuracy(
          task="multiclass", num_classes=n_classes
      )
      self.val_acc = Accuracy(task="multiclass", num_classes=n_classes)
  
imports: import glob
  import os
  import dgl
  import dgl.nn.pytorch
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.optim
  import torchmetrics.functional
  import tqdm
  from ogb.nodeproppred import DglNodePropPredDataset
  from pytorch_lightning import LightningDataModule, LightningModule, Trainer
  from pytorch_lightning.callbacks import ModelCheckpoint
  from torchmetrics import Accuracy
label_desc: Use image node_id 1 to create a new SAGE object from inherited base classes: LightningModule with example: obj = SAGE(in_feats, n_hidden, n_classes)