It might be good to sanity check a single output of the model to see what is going on here or even what the print_metrics function is doing, as 0% accuracy is about as actually likely as 100% accuracy.