The model looks generally alright. I’m wondering a bit why you are wrapping x in a list and return a tuple?
Could you try to overfit the model on a very small sample of your dataset, e.g. just 10 examples?
If that’s not working you might have some other bugs in your code.