code: def __init__(
      self, n_att_heads=4, q_dim=128, k_dim=128, v_dim=128, out_dim=128
  ):
      super(MH_ATT, self).__init__()
      self.n_att_heads = n_att_heads
      self.d_k = out_dim // n_att_heads
      self.q_proj = nn.Linear(q_dim, out_dim, bias=True)
      self.k_proj = nn.Linear(k_dim, out_dim, bias=True)
      self.v_proj = nn.Linear(v_dim, out_dim, bias=True)
      self.out_proj = nn.Linear(out_dim, out_dim, bias=True)
  
imports: import torch
  import torch.nn
  from torch_geometric.utils import softmax
  from torch_scatter import scatter
label_desc: Use image node_id 1 to create a new MH_ATT object from inherited base classes: nn with example: obj = MH_ATT(n_att_heads, q_dim, k_dim, v_dim, out_dim)