TensorFlow 2.0 - Планировщик скорости обучения
Я использую Python 3.7 и TensorFlow 2.0, мне нужно обучить нейронную сеть для 160 эпох с помощью следующего планировщика скорости обучения:
Уменьшение скорости обучения в 10 раз на 80 и 120 эпохах, где начальная скорость обучения = 0,01.
Как я могу написать функцию для включения этого планировщика скорости обучения:
def scheduler(epoch):
if epoch < 80:
return 0.01
elif epoch >= 80 and epoch < 120:
return 0.01 / 10
elif epoch >= 120:
return 0.01 / 100
callback = tf.keras.callbacks.LearningRateScheduler(scheduler)
model.fit(
x = data, y = labels,
epochs=100, callbacks=[callback],
validation_data=(val_data, val_labels))
Это правильная реализация?
Спасибо!
1 ответ
Решение
В tf.keras.callbacks.LearningRateScheduler
ожидает функцию, которая принимает индекс эпохи в качестве входных данных (целое число, индексируется от 0) и возвращает новую скорость обучения в качестве выходных данных (с плавающей запятой):
def scheduler(epoch, current_learning_rate):
if epoch == 79 or epoch == 119:
return current_learning_rate / 10
else:
return min(current_learning_rate, 0.001)
Это снизит скорость обучения в 10 раз в эпохах 80 и 120 и оставит ее такой же, как и во все другие эпохи.