def METHOD_NAME(
    self, input: torch.Tensor, hidden: torch.Tensor
) -> Tuple[torch.Tensor, torch.Tensor]:
    emb = self.drop(self.encoder(input))
    output, hidden = self.rnn(emb, hidden)
    output = self.drop(output)
    decoded = self.decoder(
        output.contiguous().view(output.size(0) * output.size(1), output.size(2))
    )
    return (
        decoded.view(output.size(0), output.size(1), decoded.size(1)),
        hidden,
    )