Solved it! So when I feed the input and output of the 1st generator into the classifier, I was concatenating them batchwise WITHOUT any shuffling. This is bad. Turns out, this has the effect of training well but validating badly. If you randomise batchwise, it both trains and validates well.