I saw a few examples in the decoder part similar to your code:
x = x.repeat(1, self.num_seq_length, self.num_features)
x = x.reshape((batch_size, self.num_seq_length, …
i doubt it will work  - essentially you feed in the a sequence of the same element, and expect the LSTM will be smart enough to output a sequence of different elements that are close to the original input.
I guess you need feed the embeded vector as ‘hidden’.  then the first input will be a random vector,  but start from second step, you need keep feed in to LSTM with your last LSTM output .