I tried your example without the enormous
net_out = nn.Linear(in_features=HIDDEN_SIZE, out_features=INPUT_SIZE)
layer, and it is not so terrible.
If you want to have a Linear layer after the LSTM, you have to repeat INPUT_SIZE times a single nn.Linear(in_features=HIDDEN_SIZE, out_features=1).
It doesn’t change our conceptual problem but you can build much more longer seq2seq architecture this way.