code: def forward(self, x, adj):
      num_node_per_graph = adj.size(1)
      if self.use_bn and not hasattr(self, "bn"):
          self.bn = nn.BatchNorm1d(num_node_per_graph).to(adj.device)
  
      if self.add_self:
          adj = adj + torch.eye(num_node_per_graph).to(adj.device)
  
      if self.mean:
          adj = adj / adj.sum(-1, keepdim=True)
  
      h_k_N = torch.matmul(adj, x)
      h_k = self.W(h_k_N)
      h_k = F.normalize(h_k, dim=2, p=2)
      h_k = F.relu(h_k)
      if self.use_bn:
          h_k = self.bn(h_k)
      return h_k
  
file_path: dgl/examples/pytorch/diffpool/model/tensorized_layers/graphsage.py
imports: import torch
  from torch import nn
  from torch.nn import functional
label_desc: Use image node_id 2 for calling the BatchedGraphSAGE obj's underlying member method code with example usage: obj.forward(x, adj) and returns: h_k