I can’t see any fundamental flaws in your models.
You could e.g. apply the relu before the batchnorm layers in your first model, but this might not change too much.
I would recommend to try to overfit a small dataset, e.g. just 10 samples, and make sure your model is able to do so by playing around with the hyperparameters.
If that’s not working, there might be another issue in your training routine, such as forgetting to zero out the gradients.