code: def __init__(
      self,
      conv,
      dims,
      fanouts,
      metapath,
      node_pool=None,
      graph_pool=Pooling,
      add_self_loops=True,
      jk_mode="concat",
  ):
      conv_class = utils.get_conv_class(conv)
      flow_class = utils.get_flow_class("whole")
      self.whole_graph = True
      self.convs = []
      for dim in dims[:-1]:
          self.convs.append(self.get_conv(conv_class, dim))
      self.fc = tf.layers.Dense(dims[-1])
      self.sampler = flow_class(fanouts, [metapath[0]], add_self_loops)
      assert jk_mode in ["concat", "maxpool"]
      self.jk_mode = jk_mode
      if node_pool is not None:
          self.node_pool = [
              self.get_node_pool(node_pool)
              for i in range(len(self.convs) // 2 + 1)
          ]
      else:
          self.node_pool = None
      self.graph_pool = self.get_graph_pool(graph_pool)
  
file_path: euler/tf_euler/python/mp_utils/graph_gnn.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import tensorflow
  import tf_euler
  from tf_euler.python.euler_ops import mp_ops
  from tf_euler.python.mp_utils import utils
  from tf_euler.python.graph_pool.base_pool import Pooling
label_desc: Use image node_id 1 to create a new GraphGNNNet object from inherited base classes: object with example: obj = GraphGNNNet(conv, dims, fanouts, metapath, node_pool, graph_pool, add__loops, jk_mode)