There seems to be a transition for the convention of defining last_epoch in lr scheduler, starting from the version of 1.1.0. To my understanding, last_epoch should mean the epoch that has already been done (i.e. training finished), and for example, when I load a pretrained model to resume training, where it has trained for 100 epochs (from 0 to 99), the last epoch should be 99, and the new start one should be 100; and for a new model not trained before, since we need to start from epoch 0, last epoch should be -1 as -1 is the one already trained. This is the convention before (and including) version 1.0.1. See lr_scheduler_1.0.1. However, since 1.1.0, during initialization, the step function is called after setting the last_epoch, which makes last_epoch to 0 instead of -1, see lr_scheduler_1.1.0 1. I wonder the reason for this change and if there is any advantage of the modification compared to previous convention. Thanks!