code: def forward(self, inputs, hidden, context, context_len):
          
          # set attention mask, sequences have different lengths, this mask
          # allows to include only valid elements of context in attention's
          # softmax
          self.attn.set_mask(context_len, context)
  
          inputs = self.dropout(inputs)
          rnn_outputs, hidden = self.rnn(inputs, hidden)
          attn_outputs, scores = self.attn(rnn_outputs, context)
  
          return rnn_outputs, hidden, attn_outputs, scores
docs: Execute RecurrentAttention.
  
          :param inputs: tensor with inputs
          :param hidden: hidden state for LSTM layer
          :param context: context tensor from encoder
          :param context_len: vector of encoder sequence lengths
  
          :returns (rnn_outputs, hidden, attn_output, attn_scores)