There could be various reasons, such as different parameter initialization, a potential bug in the architecture, different preprocessing methods, different hyperparameters for the optimizer etc.
It’s hard to tell what exactly doesn’t work. To further debug you could try to overfit a small data sample (e.g. just 10 samples) and make sure your model is able to do so. If your model cannot overfit this small dummy dataset, you might need to play around with the hyperparameters, check the gradient flow etc.