Solved by ptrblck in post #2 
              
              
                I assume you want to index the last time step in this line of code: 

which is wrong, since you are using batch_first=True and according to the docs the output shape would be [batch_size, seq_len, num_directions * hidden_size], so you might want to use self.fc(lstm_out[:, -1]) instead.