Most likely model.train() is not corresponding to the trainable argument in Keras.
model.train() and model.eval() switches the behavior of some modules, e.g. it’ll disable dropout during eval and use the running stats in batchnorm layers.
If you want to freeze parameters, you can set param.requires_grad=False.
However, note that optimizers with running estimates or momentum can still update these parameters even if the gradient is zero.