That’s strange. I just lowered the learning rate to 0.1 and returned the loss, since it was missing in your code: loss = optimizer.step(closure).
Maybe I was lucky? I’ll try it with different seeds to check if the approach is reliable.