The LSTM docs 9 explain the expected input with their shapes.
Once your input works, you could add a print statement in the forward method to check the shape of the concatenated tensor and adapt the in_features accordingly.