class_docstr: Implement of GCN
      
class_docstr_tok: ["Implement","of","GCN"]
code: def forward(self, graph_wrapper, feature, phase):
      for i in range(self.num_layers):
          if phase == "train":
              ngw = pgl.sample.edge_drop(
                  graph_wrapper, self.edge_dropout
              )
              norm = get_norm(ngw.indegree())
          else:
              ngw = graph_wrapper
              norm = graph_wrapper.node_feat["norm"]
  
          feature = pgl.layers.gcn(
              ngw,
              feature,
              self.hidden_size,
              activation="relu",
              norm=norm,
              name="layer_%s" % i,
          )
  
          feature = L.dropout(
              feature,
              self.dropout,
              dropout_implementation="upscale_in_train",
          )
  
      if phase == "train":
          ngw = pgl.sample.edge_drop(graph_wrapper, self.edge_dropout)
          norm = get_norm(ngw.indegree())
      else:
          ngw = graph_wrapper
          norm = graph_wrapper.node_feat["norm"]
  
      feature = conv.gcn(
          ngw,
          feature,
          self.num_class,
          activation=None,
          norm=norm,
          name="output",
      )
  
      return feature
  
imports: import pgl
  import paddle.fluid.layers
  import pgl.layers.conv
label_desc: Use image node_id 2 for calling the GCN obj's underlying member method code with example usage: obj.forward(graph_wrapper, feature, phase) and returns: feature