It’s hard to say, but there are so many details to look at carefully.
Such as optimization methods, do you use weight_decay(default 0 in PyTorch), is betas the same in Adam.
Besides,  do you use the same validate dataset, do you have the same batch size(the same epoch, too large batch_size usually would converge slower)?.
The initialization of embedding layer also seems too small for me, is this the same as you do in keras?
Generall, it won’t matter so much if the converge rates are close since PyTorch is much faster than keras