docstr: By default, inputs are unnormalized data
docstr_tok: ["By","default",",","inputs","are","unnormalized","data"]
code: def predict(self, features=None, adj=None):
      """By default, inputs are unnormalized data"""
      # self.eval()
      if features is None and adj is None:
          return self.forward(self.features, self.adj_norm)
      else:
          if type(adj) is not torch.Tensor:
              features, adj = utils.to_tensor(
                  features, adj, device=self.device
              )
  
          self.features = features
          if utils.is_sparse_tensor(adj):
              self.adj_norm = utils.normalize_adj_tensor(
                  adj, sparse=True
              )
          else:
              self.adj_norm = utils.normalize_adj_tensor(adj)
          return self.forward(self.features, self.adj_norm)
  
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 11 for calling the GCN4GNNGuard_attack obj's underlying member method code with example usage: obj.predict(features, adj) and returns: self, self