class_docstr: Implementation of global pooling architecture with SAGPool.
      
code: def build_model(self):
      node_features = self.graph_wrapper.node_feat["feat"]
  
      output = self.gcn(
          gw=self.graph_wrapper,
          feature=node_features,
          hidden_size=self.hidden_size,
          activation="relu",
          norm=self.graph_wrapper.node_feat["norm"],
          name="gcn_layer_1",
      )
      output1 = output
      output = self.gcn(
          gw=self.graph_wrapper,
          feature=output,
          hidden_size=self.hidden_size,
          activation="relu",
          norm=self.graph_wrapper.node_feat["norm"],
          name="gcn_layer_2",
      )
      output2 = output
      output = self.gcn(
          gw=self.graph_wrapper,
          feature=output,
          hidden_size=self.hidden_size,
          activation="relu",
          norm=self.graph_wrapper.node_feat["norm"],
          name="gcn_layer_3",
      )
  
      output = L.concat(input=[output1, output2, output], axis=-1)
  
      output, ratio_length = sag_pool(
          gw=self.graph_wrapper,
          feature=output,
          ratio=self.pooling_ratio,
          graph_id=self.graph_id,
          dataset=self.args.dataset_name,
          name="sag_pool_1",
      )
      output = L.lod_reset(output, self.graph_wrapper.graph_lod)
      cat1 = L.sequence_pool(output, "sum")
      ratio_length = L.cast(ratio_length, dtype="float32")
      cat1 = L.elementwise_div(cat1, ratio_length, axis=-1)
      cat2 = L.sequence_pool(output, "max")
      output = L.concat(input=[cat2, cat1], axis=-1)
  
      output = L.fc(output, size=self.hidden_size, act="relu")
      output = L.dropout(output, dropout_prob=self.dropout_ratio)
      output = L.fc(output, size=self.hidden_size // 2, act="relu")
      output = L.fc(
          output,
          size=self.num_classes,
          act=None,
          param_attr=fluid.ParamAttr(name="final_fc"),
      )
  
      self.labels = L.cast(self.labels, dtype="float32")
      loss = L.sigmoid_cross_entropy_with_logits(
          x=output, label=self.labels
      )
      self.loss = L.mean(loss)
      pred = L.sigmoid(output)
      self.pred = L.argmax(x=pred, axis=-1)
      correct = L.equal(self.pred, self.labels_1dim)
      correct = L.cast(correct, dtype="int32")
      self.correct = L.reduce_sum(correct)
  
file_path: PGL/legacy/examples/SAGPool/model.py
imports: from random import random
  import numpy
  import paddle
  import paddle.fluid
  import paddle.fluid.layers
  import pgl
  from pgl.graph import Graph, MultiGraph
  from pgl.graph_wrapper import GraphWrapper
  from pgl.utils.logger import log
  from pgl.layers.conv import gcn
  from layers import sag_pool
  from conv import norm_gcn
label_desc: Use image node_id 2 for calling the GlobalModel obj's underlying member method code with example usage: obj.build_model() without return types