class_docstr: One layer of GAS.
class_docstr_tok: ["One","layer","of","GAS","."]
code: def __init__(
      self,
      e_in_dim,
      u_in_dim,
      v_in_dim,
      e_out_dim,
      u_out_dim,
      v_out_dim,
      activation=None,
      dropout=0,
  ):
      super(GASConv, self).__init__()
  
      self.activation = activation
      self.dropout = nn.Dropout(dropout)
  
      self.e_linear = nn.Linear(e_in_dim, e_out_dim)
      self.u_linear = nn.Linear(u_in_dim, e_out_dim)
      self.v_linear = nn.Linear(v_in_dim, e_out_dim)
  
      self.W_ATTN_u = nn.Linear(u_in_dim, v_in_dim + e_in_dim)
      self.W_ATTN_v = nn.Linear(v_in_dim, u_in_dim + e_in_dim)
  
      # the proportion of h_u and h_Nu are specified as 1/2 in formula 8
      nu_dim = int(u_out_dim / 2)
      nv_dim = int(v_out_dim / 2)
  
      self.W_u = nn.Linear(v_in_dim + e_in_dim, nu_dim)
      self.W_v = nn.Linear(u_in_dim + e_in_dim, nv_dim)
  
      self.Vu = nn.Linear(u_in_dim, u_out_dim - nu_dim)
      self.Vv = nn.Linear(v_in_dim, v_out_dim - nv_dim)
  
file_path: dgl/examples/pytorch/gas/model.py
imports: import dgl.function
  import torch
  import torch.nn
  from dgl.nn.functional import edge_softmax
label_desc: Use image node_id 1 to create a new GASConv object from inherited base classes: nn with example: obj = GASConv(e_in_dim, u_in_dim, v_in_dim, e_out_dim, u_out_dim, v_out_dim, activation, dropout)