Добавить общее количество эпох к числу подгонок в LearningRateScheduler () keras - PullRequest
0 голосов
/ 11 июля 2019

Я смотрю на этот пост и ответ @Rubens_Zimbres. Я хочу умножить свою скорость обучения на 0,95 каждые 5 эпох, как в этом отчете (в разделе 3. Архитектура в последнем абзаце). Для этого я использую код из git .

Я упростил цикл обучения:

for epoch_cnt in range(nb_epoch):
    lrate=LearningRateScheduler(keras_model.step_decay)
    hist = model.fit_generator(X_train,y_train,nb_epoch=5,callbacks=lrate)

в другом файле (keras_model) Я реализовал функцию для распада:

def step_decay(epoch):
   initial_lrate = 0.001
   drop = 0.95
   lrate = initial_lrate * (drop**(np.floor(epoch/5))) 
   print(lrate)
   return lrate

Вывод выглядит следующим образом:

Эпоха 1/5

0,001

  • 4 с - потеря: 0,6610 - val_loss: 1,0149 Эпоха 2/5

0,001

  • 4с - потеря: 0,7534 - потеря_валоса: 1,0996 Эпоха 3/5
* * 0,001 тысячу тридцать один
  • 4 с - потери: 0,6687 - потери по величине: 0,3643 Эпоха 4/5
* * 0,001 тысяча тридцать-семь
  • 4 с - потери: 0,7048 - потери по величине: 1,1870 Эпоха 5/5

0,001

  • 4 с - потери: 0,6675 - потери по величине: 0,5315

Очевидная проблема заключается в том, что при каждом вызове fit_generator() номер эпохи для Keras сбрасывается на 0. У меня есть два вопроса:

  • Как реализовать такой экспоненциальный спад? Могу ли я добавить мой общий счет как в def step_decay(epoch,total)? как мне позвонить с fit_generator()?
  • Это вообще можно повторно использовать для оптимизатора Адама?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...