Регулировка скорости обучения Keras

искусственный интеллект

Keras предоставляет два метода адаптации скорости обучения, которые можно реализовать с помощью функций обратного вызова.

1. LearningRateScheduler

keras.callbacks.LearningRateScheduler(schedule)

Эта функция обратного вызова является планировщиком скорости обучения.

параметр

  • расписание: функция, которая принимает номер эпохи в качестве параметра (целое число от 0) и возвращает новую скорость обучения (число с плавающей запятой)

код

import keras.backend as K

from keras.callbacks import LearningRateScheduler

 

def scheduler(epoch):

    # каждые 100 эпохи , скорость обучения снижается до 1/10 от исходной

    if epoch % 100 == 0 and epoch != 0:

        lr = K.get_value(model.optimizer.lr)

        K.set_value(model.optimizer.lr, lr * 0.1)

        print("lr changed to {}".format(lr * 0.1))

    return K.get_value(model.optimizer.lr)

 

reduce_lr = LearningRateScheduler(scheduler)

model.fit(train_x, train_y, batch_size=32, epochs=300, callbacks=[reduce_lr])

2. ReduceLROnPlateau

keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=10, verbose=0, mode='auto', epsilon=0.0001, cooldown=0, min_lr=0)

Когда индекс оценки не улучшается, уменьшите скорость обучения

При обучении киосков снижение скорости обучения в 2 или 10 раз часто дает лучшие результаты. Функция обратного вызова определяет состояние индикатора, и если улучшение производительности модели не наблюдается в периоды пациентов, скорость обучения снижается.

параметр

  • монитор: количество для мониторинга
  • фактор: Коэффициент, на который каждый раз уменьшается скорость обучения, скорость обучения будет уменьшаться в виде lr = lr*фактор
  • терпение: когда эпохи терпения прошли, а производительность модели не улучшилась, будет запущено действие по снижению скорости обучения.
  • режим: один из «авто», «минимум», «макс», в минимальном режиме, если обнаруженное значение запускает снижение скорости обучения. В максимальном режиме снижение скорости обучения запускается, когда обнаруженное значение больше не растет.
  • эпсилон: порог, используемый для определения, следует ли вводить «простую область» значения обнаружения.
  • перезарядка: после того, как скорость обучения уменьшится, нормальная работа будет перезапущена после эпох перезарядки.
  • min_lr: нижняя граница скорости обучения

****код

  1. from keras.callbacks import ReduceLROnPlateau
  2. reduce_lr = ReduceLROnPlateau(monitor='val_loss', patience=10, mode='auto')
  3. model.fit(train_x, train_y, batch_size=32, epochs=300, validation_split=0.1, callbacks=[reduce_lr])