code: def forward(self, graph: dgl.DGLGraph, *args, **kwargs):
      if "feat" in graph.ndata:
          x: torch.Tensor = graph.ndata["feat"]
      else:
          x: torch.Tensor = graph.ndata["attr"]
      x = torch.nn.functional.dropout(x, self._dropout, self.training)
      results: _typing.MutableSequence[torch.Tensor] = [x]
      for _layer in range(len(self.__convolution_layers)):
          x = self.__convolution_layers[_layer](graph, x)
          if _layer < len(self.__convolution_layers) - 1:
              x = _utils.activation.activation_func(x, self._act)
              x = torch.nn.functional.dropout(
                  x, self._dropout, self.training
              )
          results.append(x)
      return results
  
file_path: AutoGL/autogl/module/model/encoders/_dgl/_sage.py
imports: import torch.nn.functional
  import typing
  import dgl
  from dgl.nn.pytorch.conv import SAGEConv
  from ..None import base_encoder, encoder_registry
  from ...None import _utils
label_desc: Use image node_id 2 for calling the _SAGE obj's underlying member method code with example usage: obj.forward(graph) and returns: results