For optim.SGD this should work. However, if you use another optimizer with internal states, e.g. running estimates, the recreation will clear out these buffers and you will most likely see a spiking loss curve.
In that case I would recommend to use the optimizer.param_group to manipulate the internal values.
Also, have a look at optim.lr_scheduler 3. These scheduler allow an easy manipulation of the learning rate using different methods.