code: def forward(
      self, data: torch_geometric.data.Data, *__args, **__kwargs
  ) -> _typing.Sequence[torch.Tensor]:
      x: torch.Tensor = data.x
      edge_index: torch.LongTensor = data.edge_index
      results: _typing.MutableSequence[torch.Tensor] = [x]
      for layer, convolution_layer in enumerate(
          self.__convolution_layers
      ):
          x = convolution_layer(x, edge_index)
          if layer < len(self.__convolution_layers) - 1:
              x = _utils.activation.activation_func(x, self._act)
              if (
                  isinstance(self._dropout, float)
                  and 0 <= self._dropout <= 1
              ):
                  x = torch.nn.functional.dropout(
                      x, self._dropout, self.training
                  )
          results.append(x)
      return results
  
file_path: AutoGL/autogl/module/model/encoders/_pyg/_sage.py
imports: import torch.nn.functional
  import typing
  import torch_geometric
  from torch_geometric.nn.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(data) and returns: results