Запуск отдельных эпох для функции fit_one_cycle в fastai - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь запустить разные эпохи функции fit_one_cycle отдельно;сохранение модели, загрузка ее и начало новой эпохи:

learn = language_model_learner(data, AWD_LSTM, drop_mult=0.5, pretrained=False).to_fp16()
learn.load('/content/gdrive/My Drive/Language Model/language_model')
learn.load_encoder('/content/gdrive/My Drive/Language Model/model_encoder');
lr = 1e-3
lr *= bs/48  # Scale learning rate by batch size
learn.unfreeze()
learn.fit_one_cycle(1, lr, moms=(0.8,0.7))
learn.save('/content/gdrive/My Drive/Language Model/language_model')
learn.save_encoder('/content/gdrive/My Drive/Language Model/model_encoder')

Вопрос: как мне изменить learning rate после каждой эпохи?

1 Ответ

0 голосов
/ 31 октября 2019

Вы можете выбрать Дискриминационный уровень обучения , который использует разные скорости обучения для разных слоев в модели.

  1. Создание групп слоев модели с использованием
# creates 3 layer groups with start, middle and end groups
learn.split(lambda m: (m[0][6], m[1]))

# only randomly initialized head now trainable
learn.freeze()

Примечание: Нет необходимости вручную разбивать слои fit_one_cycle автоматически разбивает случайно.

Ручная настройка скорости LR и снижения веса для каждой группы слоев
# all layers now trainable
learn.unfreeze()

# optionally, separate LR and WD for each group for 5 epochs
learn.fit_one_cycle(5, max_lr=slice(1e-5,1e-3), wd=(1e-4,1e-4,1e-1))
...