Hi, from my general experience , 10 epochs may or may not be a good indication for the learnability. specially when data set is fairly large and labels are sparse. I have not looked into DCASE data, but assuming each audio will be converted to multiple frame making over all datasize fairly large. I would recommend training for atleast 50 epochs and experimenting . also lowering the learning rate might help.
I don’t see any obvious issue with the code structure (I am not commenting on the model architecture)  and able to train models with similar format.