Best check this very useful diagram 55:

Since you have sequence of length 50, you have x_1, x_2, ..., x_50; each x_i is one time step
For you encoder, each x_i is 6-dimensional; for your decoder, each x_i is 1-dimensional

depth reflects num_layers in the code
The hidden state of a LSTM is a tuple (h_i, c_i), both have the same shape
The decoder gets the complete final hidden state (h_n, c_n) from the decoder (n=50 for you)
The shapes of h_i and c_i are defined by hidden_dim


To directly answer your questions:

all the information of the sequence length * input size, so in my case 50 data points or so, is stored into just 6 numbers in the encoder?

No, all the information of the input (seq_len*input_size) is stored as the last hidden state (h_n, c_n) which is independent from input_size. It depends on hidden_dim, ‘num_layers’, num_directions, and batch_size.

And the decoder takes only the last number to get information from?

No the decoder takes (h_n, c_n) is first hidden state. So yeah, the hidden state the decoder gets is multidimensional.

Because I thought at first that what the decoder takes from the encoder would be multidimensional, so that there is less loss of information.

Again, I think you confuse the hidden state with the input. Your decoder input/output is 1-dimensional (just a number). In the line output, hidden = self.lstm(input, hidden) of the decoder:

input.shape = (batch_size, input_size=1)
hidden[0].shape = hidden[1].shape = (input_size=1, batch_size, hidden_dim)

For the the encoder it’s the same, only with 6 instead of 1