class_docstr: Implementation of Spatio-Temporal Graph Convolutional Networks
docstr: forward
docstr_tok: ["forward"]
code: def forward(self):
      """forward"""
      x = self.input[:, 0 : self.args.n_his, :, :]
      # Ko>0: kernel size of temporal convolution in the output layer.
      Ko = self.args.n_his
      # ST-Block
      for i, channels in enumerate(self.args.blocks):
          x = self.st_conv_block(
              x,
              self.args.Ks,
              self.args.Kt,
              channels,
              "st_conv_%d" % i,
              self.args.keep_prob,
              act_func="GLU",
          )
  
      # output layer
      if Ko > 1:
          y = self.output_layer(x, Ko, "output_layer")
      else:
          raise ValueError(
              f'ERROR: kernel size Ko must be greater than 1, \
                      but received "{Ko}".'
          )
  
      label = self.input[:, self.args.n_his : self.args.n_his + 1, :, :]
      train_loss = fl.reduce_sum((y - label) * (y - label))
      single_pred = y[:, 0, :, :]  # shape: [batch, n, 1]
  
      return train_loss, single_pred
  
file_path: PGL/legacy/examples/stgcn/models/model.py
imports: import numpy
  import paddle.fluid
  import paddle.fluid.layers
  import pgl
label_desc: Use image node_id 2 for calling the STGCNModel obj's underlying member method code with example usage: obj.forward() and returns: train_loss,  single_pred