code: def _train_without_val(self, labels, idx_train, train_iters, verbose):
      self.train()
      optimizer = optim.Adam(
          self.parameters(), lr=self.lr, weight_decay=self.weight_decay
      )
      for i in range(train_iters):
          optimizer.zero_grad()
          output = self.forward(self.features, self.adj_norm)
          loss_train = F.nll_loss(
              output[idx_train], labels[idx_train], weight=None
          )  # this weight is the weight of each training nodes
          loss_train.backward()
          optimizer.step()
          if verbose and i % 20 == 0:
              print(
                  "Epoch {}, training loss: {}".format(
                      i, loss_train.item()
                  )
              )
  
      self.eval()
      output = self.forward(self.features, self.adj_norm)
      self.output = output
  
imports: import numpy
  from copy import deepcopy
  from numba import njit
  import torch.nn
  import torch.nn.functional
  import math
  import torch
  import torch.optim
  import typing
  from torch_geometric.data import Data
  from sklearn.metrics.pairwise import euclidean_distances, cosine_similarity
  from scipy.sparse import lil_matrix
  from sklearn.preprocessing import normalize
  import scipy.sparse
  import autogl.data
  from ..None import register_model
  from .None import utils
  from ..gcn import GCN
  from .nn import GCNConv
  from ..base import BaseAutoModel
  from .....utils import get_logger
  from .utils import accuracy
label_desc: Use image node_id 6 for calling the GCN4GNNGuard obj's underlying member method code with example usage: obj._train_without_val(labels, idx_train, train_iters, verbose) without return types