I toyed with the idea of reprojection for a while. I’m trying it with setting num_layers in GRU() for the encoder first, and if that fails, I’ll just using an additional linear layer after each encoder GRU layer. Thanks!
def forward(self, input_value, hidden):
    recursive_input = input_value
    recursive_input, hidden = self.enc(recursive_input, hidden)

    hidden = hidden[-1].view(1, hidden.size(1), hidden.size(2))
    for i in range(self.n_layers):
        recursive_input = F.relu(recursive_input)
        recursive_input, hidden = self.dec(recursive_input, hidden)

    seq_output = self.out(recursive_input)
    return (seq_output, recursive_input, hidden, None)