class_docstr: The GraphSAGE operator from the `"Inductive Representation Learning on
  Large Graphs" <https://arxiv.org/abs/1706.02216>`_ paper.
  
  :class:`CuGraphSAGEConv` is an optimized version of
  :class:`~torch_geometric.nn.conv.SAGEConv` based on the :obj:`cugraph-ops`
  package that fuses message passing computation for accelerated execution
  and lower memory footprint.
class_docstr_tok: ["The","GraphSAGE","operator","from","the","`","``","Inductive","Representation","Learning","on","Large","Graphs","''","<","https",":","\/\/arxiv.org\/abs\/1706.02216",">","`","_","paper",".",":","class",":","`","CuGraphSAGEConv","`","is","an","optimized","version","of",":","class",":","`","~torch_geometric.nn.conv.SAGEConv","`","based","on","the",":","obj",":","`","cugraph-ops","`","package","that","fuses","message","passing","computation","for","accelerated","execution","and","lower","memory","footprint","."]
code: def forward(
      self,
      x: Tensor,
      csc: Tuple[Tensor, Tensor, int],
      max_num_neighbors: Optional[int] = None,
  ) -> Tensor:
      graph = self.get_cugraph(csc, max_num_neighbors)
  
      if self.project:
          x = self.pre_lin(x).relu()
  
      out = SAGEConvAgg(x, graph, self.aggr)
  
      if self.root_weight:
          out = self.lin(out)
      else:
          out = self.lin(out[:, : self.in_channels])
  
      if self.normalize:
          out = F.normalize(out, p=2.0, dim=-1)
  
      return out
  
file_path: pytorch_geometric/torch_geometric/nn/conv/cugraph/sage_conv.py
imports: from typing import Optional, Tuple
  import torch.nn.functional
  from torch import Tensor
  from torch.nn import Linear
  from torch_geometric.nn.conv.cugraph import CuGraphModule
  from torch_geometric.nn.conv.cugraph.base import LEGACY_MODE
label_desc: Use image node_id 3 for calling the CuGraphSAGEConv obj's underlying member method code with example usage: obj.forward(x, csc, max_num_neighbors) and returns: out