Solved by ptrblck in post #2 
              
              
                You should get a warning stating that you should use get_last_lr() instead of get_lr(): 

UserWarning: To get the last learning rate computed by the scheduler, please use get_last_lr(). 

This should give you the expected learning rates: 
for epoch in range(5):
        optimizer.step()
        print…