class_docstr: Model from Robust Spatial Filtering with Graph Convolutional Neural Networks
  https://arxiv.org/abs/1703.00792
class_docstr_tok: ["Model","from","Robust","Spatial","Filtering","with","Graph","Convolutional","Neural","Networks","https",":","\/\/arxiv.org\/abs\/1703.00792"]
code: def build_graph(self):
      self.vertex_features = Feature(shape=(None, self.max_atoms, 75))
      self.adj_matrix = Feature(
          shape=(None, self.max_atoms, 1, self.max_atoms)
      )
      self.mask = Feature(shape=(None, self.max_atoms, 1))
  
      gcnn1 = BatchNorm(
          GraphCNN(
              num_filters=64,
              in_layers=[
                  self.vertex_features,
                  self.adj_matrix,
                  self.mask,
              ],
          )
      )
      gcnn1 = Dropout(self.dropout, in_layers=gcnn1)
      gcnn2 = BatchNorm(
          GraphCNN(
              num_filters=64,
              in_layers=[gcnn1, self.adj_matrix, self.mask],
          )
      )
      gcnn2 = Dropout(self.dropout, in_layers=gcnn2)
      gc_pool, adj_matrix = GraphCNNPool(
          num_vertices=32, in_layers=[gcnn2, self.adj_matrix, self.mask]
      )
      gc_pool = BatchNorm(gc_pool)
      gc_pool = Dropout(self.dropout, in_layers=gc_pool)
      gcnn3 = BatchNorm(
          GraphCNN(num_filters=32, in_layers=[gc_pool, adj_matrix])
      )
      gcnn3 = Dropout(self.dropout, in_layers=gcnn3)
      gc_pool2, adj_matrix2 = GraphCNNPool(
          num_vertices=8, in_layers=[gcnn3, adj_matrix]
      )
      gc_pool2 = BatchNorm(gc_pool2)
      gc_pool2 = Dropout(self.dropout, in_layers=gc_pool2)
      flattened = Flatten(in_layers=gc_pool2)
      readout = Dense(
          out_channels=256,
          activation_fn=tf.nn.relu,
          in_layers=flattened,
      )
      costs = []
      self.my_labels = []
      for task in range(self.n_tasks):
          if self.mode == "classification":
              classification = Dense(
                  out_channels=2,
                  activation_fn=None,
                  in_layers=[readout],
              )
  
              softmax = SoftMax(in_layers=[classification])
              self.add_output(softmax)
  
              label = Label(shape=(None, 2))
              self.my_labels.append(label)
              cost = SoftMaxCrossEntropy(
                  in_layers=[label, classification]
              )
              costs.append(cost)
          if self.mode == "regression":
              regression = Dense(
                  out_channels=1,
                  activation_fn=None,
                  in_layers=[readout],
              )
              self.add_output(regression)
  
              label = Label(shape=(None, 1))
              self.my_labels.append(label)
              cost = L2Loss(in_layers=[label, regression])
              costs.append(cost)
      if self.mode == "classification":
          entropy = Stack(in_layers=costs, axis=-1)
      elif self.mode == "regression":
          entropy = Stack(in_layers=costs, axis=1)
      self.my_task_weights = Weights(shape=(None, self.n_tasks))
      loss = WeightedError(in_layers=[entropy, self.my_task_weights])
      self.set_loss(loss)
  
imports: import collections
  import numpy
  import six
  import tensorflow
  from deepchem.data import NumpyDataset
  from deepchem.feat.graph_features import ConvMolFeaturizer
  from deepchem.feat.mol_graphs import ConvMol
  from deepchem.metrics import to_one_hot
  from deepchem.models.tensorgraph.graph_layers import WeaveGather, DTNNEmbedding, DTNNStep, DTNNGather, DAGLayer, DAGGather, DTNNExtract, MessagePassing, SetGather
  from deepchem.models.tensorgraph.graph_layers import WeaveLayerFactory
  from deepchem.models.tensorgraph.layers import Dense, SoftMax, SoftMaxCrossEntropy, GraphConv, BatchNorm, GraphPool, GraphGather, WeightedError, Dropout, BatchNorm, Stack, Flatten, GraphCNN, GraphCNNPool
  from deepchem.models.tensorgraph.layers import L2Loss, Label, Weights, Feature
  from deepchem.models.tensorgraph.tensor_graph import TensorGraph
  from deepchem.trans import undo_transforms
label_desc: Use image node_id 2 for calling the PetroskiSuchModel obj's underlying member method code with example usage: obj.build_graph() without return types