class_docstr: Base Graph Model
class_docstr_tok: ["Base","Graph","Model"]
docstr: build graph model
docstr_tok: ["build","graph","model"]
code: def build_model(self, args):
      """build graph model"""
      self.batch_nodes = L.data(
          name="batch_nodes", shape=[-1], dtype="int64"
      )
      self.labels = L.data(name="labels", shape=[-1], dtype="int64")
  
      self.batch_nodes = L.reshape(self.batch_nodes, [-1, 1])
      self.labels = L.reshape(self.labels, [-1, 1])
  
      self.batch_nodes.stop_gradients = True
      self.labels.stop_gradients = True
  
      feat = self.graph_wrapper.node_feat["feat"]
      if self.graph_wrapper is not None:
          feat = self.neighbor_aggregator(feat)
  
      assert feat is not None
      feat = L.gather(feat, self.batch_nodes)
      self.logits = L.fc(
          feat, size=40, act=None, name="node_predictor_logits"
      )
      self.loss()
  
imports: import os
  import re
  import time
  from random import random
  from functools import reduce, partial
  import numpy
  import multiprocessing
  import paddle
  import paddle.fluid
  import paddle.fluid
  import paddle.fluid.layers
  from pgl.graph_wrapper import GraphWrapper
  from pgl.layers.conv import gcn, gat
  from pgl.utils import paddle_helper
label_desc: Use image node_id 2 for calling the BaseGraph obj's underlying member method code with example usage: obj.build_model(args) without return types