code: def forward(self, g):
      x = g.ndata["feat"]
      if "batch" in g.ndata.keys():
          batch = g.ndata["batch"]
      else:
          batch = None
  
      h1 = self.convs[0](g, x)
      h1 = self.layer_norms[0](h1, batch)
      h1 = self.activations[0](h1)
  
      x_skip_1 = self.skip_lins[0](x)
      h2 = self.convs[1](g, h1 + x_skip_1)
      h2 = self.layer_norms[1](h2, batch)
      h2 = self.activations[1](h2)
  
      x_skip_2 = self.skip_lins[1](x)
      ret = self.convs[2](g, h1 + h2 + x_skip_2)
      ret = self.layer_norms[2](ret, batch)
      ret = self.activations[2](ret)
      return ret
  
imports: import copy
  import dgl
  import torch
  from dgl.nn.pytorch.conv import GraphConv, SAGEConv
  from torch import nn
  from torch.nn import BatchNorm1d, Parameter
  from torch.nn.init import ones_, zeros_
label_desc: Use image node_id 2 for calling the GraphSAGE_GCN obj's underlying member method code with example usage: obj.forward(g) and returns: ret