Why do I get "input.size(-1) must be equal to input_size" error in this case?

Thanks a lot for your help @ptrblck !

I have to train an Autoencoder using RNN. I have input data (before the sequencing) of size [8000,4096] and train_dataset of shape (4096*1) after performing sequencing. First I need to train an Autoencoder then RNN separately (Stepwise) and also end to end. How can I proceed? I tried different methods but I always ended up with errors. ex: for unbatched 2-D input, hx should also be 2-D but got 3-d tensor or input.size(-1) must be equal to input_size. expected 4096, got 1. I am new to Autoencoders and RNN…
How can I train this autoencoder using RNN? Is this the proper way of implementation?

class Encoder(nn.Module):
    def __init__(self, seq_len, n_features, embedding_dim=64):
        super(Encoder, self).__init__()
        self.seq_len, self.n_features = seq_len, n_features
        self.embedding_dim, self.hidden_dim = embedding_dim, 2 * embedding_dim
        
        self.rnn1 = nn.RNN(
        input_size=n_features,
        hidden_size=self.hidden_dim,
        num_layers=1,
        batch_first=True
        )
        
        self.rnn2 = nn.RNN(
        input_size=self.hidden_dim,
        hidden_size=embedding_dim,
        num_layers=1,
        batch_first=True
        )
        
    def forward(self, x):
        x = x.reshape((1, self.seq_len, self.n_features))
        x, (_,_) = self.rnn1(x)
        x, (hidden_n,_) = self.rnn2(x)
        return hidden_n.reshape((self.n_features, embedding_dim))

    
class Decoder(nn.Module):
    def __init__(self, seq_len, input_dim=64, n_features=1):
        super(Decoder, self).__init__()
        self.seq_len, self.input_dim = seq_len, input_dim
        self.hidden_dim, self.n_features = 2 * input_dim, n_features
        
        self.rnn1 = nn.RNN(
        input_size=input_dim,
        hidden_size=input_dim,
        num_layers=1,
        batch_first=True
        )
        
        self.rnn2 = nn.RNN(
        input_size=input_dim,
        hidden_size=self.hidden_dim,
        num_layers=1,
        batch_first=True
        )
        
        self.output_layer = nn.Linear(self.hidden_dim, n_features)
    def forward(self, x):
        x = x.repeat(self.seq_len, 1)
        x = x.reshape((self.n_features, self.seq_len, embedding_dim))
        x, (hidden_n, cell_n) = self.rnn1(x)
        x, (hidden_n, cell_n) = self.rnn2(x) 
        x = x.reshape((self.seq_len, self.hidden_dim))
        return self.output_layer(x)

class RecurrentAutoencoder(nn.Module):
    def __init__(self, seq_len, n_features, embedding_dim=64):
        super(RecurrentAutoencoder, self).__init__()
        self.encoder = Encoder(seq_len, n_features, embedding_dim)
        self.decoder = Decoder(seq_len, embedding_dim, n_features)
    def forward(self, x):
        x = self.encoder(x)
        x = self.decoder(x)
        return x
    
model = RecurrentAutoencoder(seq_len, n_features, 128)
print(model)

I tried various methods. Help me!