code: def forward(self, z):
      w = self.project(z).mean(0)
      beta = torch.softmax(w, dim=0)
      beta = beta.expand((z.shape[0],) + beta.shape)
  
      return (beta * z).sum(1)
  
imports: import pickle
  import dgl.sparse
  import torch
  import torch.nn
  import torch.nn.functional
  from dgl.data.utils import _get_dgl_url, download, get_download_dir
  from torch.optim import Adam
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