2021-01-12 16:02:35
#library #pytorch
Поиск оптимального learning rate PyTorchВ fastai реализован тест диапазона для поиска оптимального learning rate. Хочу рассказать вам о библиотеке для PyTroch, которая является имплементацией пейпера Cyclical Learning Rates for Training Neural Networks by Leslie N. Smith и так же содержит измененую версию как в fastai.
Во время предтренировочного прогона learning rate увеличивается линейно или экспоненциально между двумя границами. Как правило, хорошую скорость статического обучения можно найти на полпути нисходящей кривой потерь. На графике ниже это будет lr = 0,002.
Установка:
pip install torch-lr-finder
Использование изменной версии как в fastai:
from torch_lr_finder import LRFinder
model = ...
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=1e-7, weight_decay=1e-2)
lr_finder = LRFinder(model, optimizer, criterion, device="cuda")
lr_finder.range_test(trainloader, end_lr=100, num_iter=100)
lr_finder.plot()
lr_finder.reset()
Использование изменной версии как в пейпере:
from torch_lr_finder import LRFinder
model = ...
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.1, weight_decay=1e-2)
lr_finder = LRFinder(model, optimizer, criterion, device="cuda")
lr_finder.range_test(trainloader, val_loader=val_loader, end_lr=1, num_iter=100, step_mode="linear")
lr_finder.plot(log_lr=False)
lr_finder.reset()
1.7K views13:02