code: def forward(self, z):
      w = self.project(z).mean(0)  # (M, 1)
      beta = torch.softmax(w, dim=0)  # (M, 1)
      beta = beta.expand((z.shape[0],) + beta.shape)  # (N, M, 1)
  
      return (beta * z).sum(1)
  
file_path: AutoGL/test/performance/heterogeneous/dgl/han_base/model_hetero.py
imports: import torch
  import torch.nn
  import torch.nn.functional
  import dgl
  from dgl.nn.pytorch import GATConv
label_desc: Use image node_id 2 for calling the SemanticAttention obj's underlying member method code with example usage: obj.forward(z) and returns: unknown