Created by: cjld
This pr allows the user to customize the learning rate. For example, add warmup to step decay like this: