Precision, recall and accuracy metrics significantly different between training/validation and actual predictions
Your model is overfitted. It means you are like &quot;memorizing&quot; from training data, when you should &quot;learn&quot;. A good model must have similar scores for Training and validation data, but it's not your case, scores are super different. To avoid that:

Use more data to train. Why you use only 50% for training? I will
recommend you use about 90% almost. Anyway, you will be keeping
around 5000 row to test your model, more than enough. With more data, more difficult to overfit. Moreover you can use techniques like data augmentation to obtain more data.
Increase complexity of the model. Adding more layers or convolutions.
You can try also to use some extra techniques like drop out or regularization.
Decrease the value of learning rate, maybe you can improve your model
with this step.

If you use a combination of these point I commented, you should see an improvement on your validations scores.