class_docstr: Base class for models that aren't constructed from traditional, sequential layers.
  Subclasses must set self.outputs in _build method
  
  (Removes the layers idiom from build method of the Model class)
class_docstr_tok: ["Base","class","for","models","that","are","n't","constructed","from","traditional",",","sequential","layers",".","Subclasses","must","set","self.outputs","in","_build","method","(","Removes","the","layers","idiom","from","build","method","of","the","Model","class",")"]
docstr: Wrapper for _build() 
docstr_tok: ["Wrapper","for","_build","(",")"]
code: def build(self):
      """Wrapper for _build()"""
      with tf.variable_scope(self.name):
          self._build()
  
      # Store model variables for easy access
      variables = tf.get_collection(
          tf.GraphKeys.GLOBAL_VARIABLES, scope=self.name
      )
      self.vars = {var.name: var for var in variables}
  
      # Build metrics
      self._loss()
      self._accuracy()
  
      self.opt_op = self.optimizer.minimize(self.loss)
  
imports: from collections import namedtuple
  import tensorflow
  import math
  import graphsage.layers
  import graphsage.metrics
  from .prediction import BipartiteEdgePredLayer
  from .aggregators import MeanAggregator, MaxPoolingAggregator, MeanPoolingAggregator, SeqAggregator, GCNAggregator
label_desc: Use image node_id 2 for calling the GeneralizedModel obj's underlying member method code with example usage: obj.build() without return types