class_docstr: SAGE model for distributed train and evaluation.
  
  Parameters
  ----------
  in_feats : int
      Feature dimension.
  n_hidden : int
      Hidden layer dimension.
  n_classes : int
      Number of classes.
  n_layers : int
      Number of layers.
  activation : callable
      Activation function.
  dropout : float
      Dropout value.
class_docstr_tok: ["SAGE","model","for","distributed","train","and","evaluation",".","Parameters","--","--","--","--","--","in_feats",":","int","Feature","dimension",".","n_hidden",":","int","Hidden","layer","dimension",".","n_classes",":","int","Number","of","classes",".","n_layers",":","int","Number","of","layers",".","activation",":","callable","Activation","function",".","dropout",":","float","Dropout","value","."]
docstr: Forward function.
  
  Parameters
  ----------
  blocks : List[DGLBlock]
      Sampled blocks.
  x : DistTensor
      Feature data.
docstr_tok: ["Forward","function",".","Parameters","--","--","--","--","--","blocks",":","List","[","DGLBlock","]","Sampled","blocks",".","x",":","DistTensor","Feature","data","."]
code: def forward(self, blocks, x):
      """
      Forward function.
  
      Parameters
      ----------
      blocks : List[DGLBlock]
          Sampled blocks.
      x : DistTensor
          Feature data.
      """
      h = x
      for i, (layer, block) in enumerate(zip(self.layers, blocks)):
          h = layer(block, h)
          if i != len(self.layers) - 1:
              h = self.activation(h)
              h = self.dropout(h)
      return h
  
file_path: dgl/examples/distributed/graphsage/node_classification.py
imports: import argparse
  import socket
  import time
  import dgl
  import dgl.nn.pytorch
  import numpy
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.optim
  import tqdm
label_desc: Use image node_id 2 for calling the DistSAGE obj's underlying member method code with example usage: obj.forward(blocks, x) and returns: h