Поскольку вы используете команду torch.optim.lr_scheduler.StepLR(optimizer, 1, gamma=0.9)
(то есть фактически torch.optim.lr_scheduler.StepLR(optimizer, step_size=1, gamma=0.9)
), таким образом, вы умножаете скорость обучения на gamma=0.9
каждый step_size=1
шаг:
- 0,9 = 0,9
- 0,729 = 0,9 * 0,9 * 0,9
- 0,6561 = 0,9 * 0,9 * 0,9 * 0,9
- 0,59049 = 0,9 * 0,9 * 0,9 * 0,9 * 0,9
Единственный «странный» момент - отсутствие второго 0,81 = 0,9 * 0,9 (ОБНОВЛЕНИЕ: см. ответ Szymon Maszke для объяснения)
Чтобы предотвратить раннее снижение, если у вас есть N
выборок в вашем наборе данных, и размер пакета равен D, затем установите torch.optim.lr_scheduler.StepLR(optimizer, step_size=N/D, gamma=0.9)
для уменьшения в каждую эпоху. Чтобы уменьшить каждую эпоху, установите torch.optim.lr_scheduler.StepLR(optimizer, step_size=E*N/D, gamma=0.9)