TensorFlow 2.0 - Планировщик скорости обучения - PullRequest
0 голосов
/ 07 марта 2020

Я использую 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 Ответ

1 голос
/ 14 марта 2020

tf.keras.callbacks.LearningRateScheduler ожидает функцию, которая принимает индекс эпохи в качестве входных данных (целое число, индексированное от 0) и возвращает новую скорость обучения в качестве выходных данных (float):

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 и оставьте так же, как и во все другие эпохи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...