code: def forward(self, g_list):
      feature_list = []
      for g in g_list:
          feature_list.append(g.ndata["feat"])
      for i in range(self.num_layers):
          W = self.gcn_weights_list[i]
          for j, g in enumerate(g_list):
              # Attention: I try to use the below code to set gcn.weight(similar to pyG_temporal),
              # but it doesn't work. It seems that the gradient function lost in this situation,
              # more discussion see here: https://github.com/benedekrozemberczki/pytorch_geometric_temporal/issues/80
              # ====================================================
              # W = self.gnn_convs[i].weight[None, :, :]
              # W, _ = self.recurrent_layers[i](W)
              # self.gnn_convs[i].weight = nn.Parameter(W.squeeze())
              # ====================================================
  
              # Remove the following line of code, it will become `GCN`.
              W = self.recurrent_layers[i](W)
              feature_list[j] = self.gnn_convs[i](
                  g, feature_list[j], weight=W
              )
      return self.mlp(feature_list[-1])
  
imports: import torch
  import torch.nn
  from dgl.nn.pytorch import GraphConv
  from torch.nn import init
  from torch.nn.parameter import Parameter
label_desc: Use image node_id 3 for calling the EvolveGCNO obj's underlying member method code with example usage: obj.forward(g_list) and returns: self