code: def __init__(
      self,
      in_feats,
      n_hidden,
      n_classes,
      n_layers,
      activation,
      dropout,
      lr,
      multilabel,
  ):
      super().__init__()
      self.save_hyperparameters()
      self.module = SAGE(
          in_feats, n_hidden, n_classes, n_layers, activation, dropout
      )
      self.lr = lr
      self.f1score_class = lambda: (
          MulticlassF1Score if not multilabel else MultilabelF1Score
      )(n_classes, average="micro")
      self.train_acc = self.f1score_class()
      self.val_acc = self.f1score_class()
      self.num_steps = 0
      self.cum_sampled_nodes = [0 for _ in range(n_layers + 1)]
      self.cum_sampled_edges = [0 for _ in range(n_layers)]
      self.w = 0.99
      self.loss_fn = (
          nn.CrossEntropyLoss()
          if not multilabel
          else nn.BCEWithLogitsLoss()
      )
      self.pt = 0
  
imports: import argparse
  import glob
  import math
  import os
  import time
  import dgl
  import torch
  import torch.nn
  import torch.nn.functional
  from ladies_sampler import LadiesSampler, normalized_edata, PoissonLadiesSampler
  from load_graph import load_dataset
  from model import SAGE
  from pytorch_lightning import LightningDataModule, LightningModule, Trainer
  from pytorch_lightning.callbacks import Callback, EarlyStopping, ModelCheckpoint
  from pytorch_lightning.loggers import TensorBoardLogger
  from torchmetrics.classification import MulticlassF1Score, MultilabelF1Score
label_desc: Use image node_id 1 to create a new SAGELightning object from inherited base classes: LightningModule with example: obj = SAGELightning(in_feats, n_hidden, n_classes, n_layers, activation, dropout, lr, multilabel)