Thanks for the description.
Based on it, it seems you are using the first approach with two LSTMs in Keras, while the second one with the bidirectional LSTMs in PyTorch.
If that’s the case, then surely these architectures are not the same. 
I think I’m not familiar enough with Keras and don’t see how these two LSTM layers can be interpreted as a bidirectional LSTM, but maybe Keras applies something under the hood, which I’m missing.