class_docstr: Attention based GRU (AGRU). AGRU uses the attention score to replace the update gate of GRU, and changes the
  hidden state directly.
  
  Formally:
      ..math: {h}_{t}^{\prime}=\left(1-a_{t}
  ight) * {h}_{t-1}^{\prime}+a_{t} *      ilde{{h}}_{t}^{\prime}
  
      :math:`{h}_{t}^{\prime}`, :math:`h_{t-1}^{\prime}`, :math:`{h}_{t-1}^{\prime}`,
      :math: `        ilde{{h}}_{t}^{\prime}` are the hidden state of AGRU
code: def __init__(self, input_size, hidden_size, bias=True):
      super(AGRUCell, self).__init__()
      self.input_size = input_size
      self.hidden_size = hidden_size
      self.bias = bias
      # (W_ir|W_iu|W_ih)
      self.weight_ih = nn.Parameter(
          torch.randn(3 * hidden_size, input_size)
      )
      # (W_hr|W_hu|W_hh)
      self.weight_hh = nn.Parameter(
          torch.randn(3 * hidden_size, hidden_size)
      )
      if self.bias:
          # (b_ir|b_iu|b_ih)
          self.bias_ih = nn.Parameter(torch.zeros(3 * hidden_size))
          # (b_hr|b_hu|b_hh)
          self.bias_hh = nn.Parameter(torch.zeros(3 * hidden_size))
      else:
          self.register_parameter("bias_ih", None)
          self.register_parameter("bias_hh", None)
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from torch.nn.init import xavier_normal_, constant_
  from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence, PackedSequence
  from recbole.utils import ModelType, InputType, FeatureType
  from recbole.model.layers import FMEmbedding, MLPLayers, ContextSeqEmbLayer, SequenceAttLayer
  from recbole.model.abstract_recommender import SequentialRecommender
label_desc: Use image node_id 1 to create a new AGRUCell object from inherited base classes: nn with example: obj = AGRUCell(input_size, hidden_size, bias)