class_docstr: Convenience class for training a single task graph convolutional model. 
class_docstr_tok: ["Convenience","class","for","training","a","single","task","graph","convolutional","model","."]
docstr: net: an instance of class GraphConvolution
  lr: float, learning rate 
  weight_decay: float
docstr_tok: ["net",":","an","instance","of","class","GraphConvolution","lr",":","float",",","learning","rate","weight_decay",":","float"]
code: def __init__(self, net, lr, weight_decay):
      """
      net: an instance of class GraphConvolution
      lr: float, learning rate
      weight_decay: float
      """
      self.net = net
      self.criterion = nn.CrossEntropyLoss()
      self.input_x = torch.FloatTensor(
          -1, self.net.max_n_atoms, self.net.n_atom_types
      )
      self.input_g = torch.FloatTensor(
          -1, self.net.max_n_atoms, self.net.max_n_atoms
      )
      self.label = torch.FloatTensor(-1)
  
      self.net.cuda()
      self.criterion = nn.CrossEntropyLoss()
      self.criterion.cuda()
  
      self.input_x, self.input_g, self.label = (
          self.input_x.cuda(),
          self.input_g.cuda(),
          self.label.cuda(),
      )
  
      self.lr = lr
      self.weight_decay = weight_decay
      # setup optimizer
      self.optimizer = optim.Adam(
          self.net.parameters(),
          lr=self.lr,
          weight_decay=self.weight_decay,
      )
  
imports: import torch.nn
  import torch.nn.parallel
  import torch.backends.cudnn
  from torch.autograd import Variable
  import torch.optim
  import random
  import numpy
  from sklearn.metrics import roc_auc_score
label_desc: Use image node_id 1 to create a new SingleTaskGraphConvolution object from inherited base classes: object with example: obj = SingleTaskGraphConvolution(net, lr, weight_decay)