class_docstr: Model for Graph Property Prediction Based on Graph Attention Networks (GAT).
  
  This model proceeds as follows:
  
  * Update node representations in graphs with a variant of GAT
  * For each graph, compute its representation by 1) a weighted sum of the node
      representations in the graph, where the weights are computed by applying a
      gating function to the node representations 2) a max pooling of the node
      representations 3) concatenating the output of 1) and 2)
  * Perform the final prediction using an MLP
  
  Examples
  --------
  >>> import deepchem as dc
  >>> from deepchem.models import GATModel
  >>> # preparing dataset
  >>> smiles = ["C1CCC1", "C1=CC=CN=C1"]
  >>> labels = [0., 1.]
  >>> featurizer = dc.feat.MolGraphConvFeaturizer()
  >>> X = featurizer.featurize(smiles)
  >>> dataset = dc.data.NumpyDataset(X=X, y=labels)
  >>> # training model
  >>> model = GATModel(mode='classification', n_tasks=1,
  ...                  batch_size=16, learning_rate=0.001)
  >>> loss = model.fit(dataset, nb_epoch=5)
  
  References
  ----------
  .. [1] Petar Veličković, Guillem Cucurull, Arantxa Casanova, Adriana Romero, Pietro Liò,
      and Yoshua Bengio. "Graph Attention Networks." ICLR 2018.
  
  Notes
  -----
  This class requires DGL (https://github.com/dmlc/dgl) and DGL-LifeSci
  (https://github.com/awslabs/dgl-lifesci) to be installed.
class_docstr_tok: ["Model","for","Graph","Property","Prediction","Based","on","Graph","Attention","Networks","(","GAT",")",".","This","model","proceeds","as","follows",":","*","Update","node","representations","in","graphs","with","a","variant","of","GAT","*","For","each","graph",",","compute","its","representation","by","1",")","a","weighted","sum","of","the","node","representations","in","the","graph",",","where","the","weights","are","computed","by","applying","a","gating","function","to","the","node","representations","2",")","a","max","pooling","of","the","node","representations","3",")","concatenating","the","output","of","1",")","and","2",")","*","Perform","the","final","prediction","using","an","MLP","Examples","--","--","--","--",">",">",">","import","deepchem","as","dc",">",">",">","from","deepchem.models","import","GATModel",">",">",">","#","preparing","dataset",">",">",">","smiles","=","[","``","C1CCC1","''",",","``","C1=CC=CN=C1","''","]",">",">",">","labels","=","[","0.",",","1",".","]",">",">",">","featurizer","=","dc.feat.MolGraphConvFeaturizer","(",")",">",">",">","X","=","featurizer.featurize","(","smiles",")",">",">",">","dataset","=","dc.data.NumpyDataset","(","X=X",",","y=labels",")",">",">",">","#","training","model",">",">",">","model","=","GATModel","(","mode='classification","'",",","n_tasks=1",",","...","batch_size=16",",","learning_rate=0.001",")",">",">",">","loss","=","model.fit","(","dataset",",","nb_epoch=5",")","References","--","--","--","--","--","..","[","1","]","Petar","Veli\u010dkovi\u0107",",","Guillem","Cucurull",",","Arantxa","Casanova",",","Adriana","Romero",",","Pietro","Li\u00f2",",","and","Yoshua","Bengio",".","``","Graph","Attention","Networks",".","''","ICLR","2018",".","Notes","--","--","-","This","class","requires","DGL","(","https",":","\/\/github.com\/dmlc\/dgl",")","and","DGL-LifeSci","(","https",":","\/\/github.com\/awslabs\/dgl-lifesci",")","to","be","installed","."]
docstr: Create batch data for GAT.
  
  Parameters
  ----------
  batch: tuple
      The tuple is ``(inputs, labels, weights)``.
  
  Returns
  -------
  inputs: DGLGraph
      DGLGraph for a batch of graphs.
  labels: list of torch.Tensor or None
      The graph labels.
  weights: list of torch.Tensor or None
      The weights for each sample or sample/task pair converted to torch.Tensor.
docstr_tok: ["Create","batch","data","for","GAT",".","Parameters","--","--","--","--","--","batch",":","tuple","The","tuple","is","``","(","inputs",",","labels",",","weights",")","``",".","Returns","--","--","--","-","inputs",":","DGLGraph","DGLGraph","for","a","batch","of","graphs",".","labels",":","list","of","torch.Tensor","or","None","The","graph","labels",".","weights",":","list","of","torch.Tensor","or","None","The","weights","for","each","sample","or","sample\/task","pair","converted","to","torch.Tensor","."]
code: def _prepare_batch(self, batch):
      """Create batch data for GAT.
  
      Parameters
      ----------
      batch: tuple
          The tuple is ``(inputs, labels, weights)``.
  
      Returns
      -------
      inputs: DGLGraph
          DGLGraph for a batch of graphs.
      labels: list of torch.Tensor or None
          The graph labels.
      weights: list of torch.Tensor or None
          The weights for each sample or sample/task pair converted to torch.Tensor.
      """
      try:
          import dgl
      except:
          raise ImportError("This class requires dgl.")
  
      inputs, labels, weights = batch
      dgl_graphs = [
          graph.to_dgl_graph(self_loop=self._self_loop)
          for graph in inputs[0]
      ]
      inputs = dgl.batch(dgl_graphs).to(self.device)
      _, labels, weights = super(GATModel, self)._prepare_batch(
          ([], labels, weights)
      )
      return inputs, labels, weights
  
file_path: deepchem/deepchem/models/torch_models/gat.py
imports: import torch.nn
  import torch.nn.functional
  from deepchem.models.losses import Loss, L2Loss, SparseSoftmaxCrossEntropy
  from deepchem.models.torch_models.torch_model import TorchModel
  from typing import Optional
label_desc: Use image node_id 2 for calling the GATModel obj's underlying member method code with example usage: obj._prepare_batch(batch) and returns: inputs,  labels,  weights