Hi,
Thank you for your answer.
I have switched from   ReduceLROnPlateau to editing the learning rate by doing:
for g in optimizer.param_groups:
    g["lr"] = new_learning_rate

and detecting a plateau in the val loss myself, but I’m missing some features of ReduceLROnPlateau like threshold and threshold_mode.
Maybe the easiest would be to copy the code for ReduceLROnPlateau and call the function changing my loss at the end of their _reduce_lr function.