TensorFlow 2.0 - 学习率调度器
TensorFlow 2.0 - Learning Rate Scheduler
我正在使用 Python 3.7 和 TensorFlow 2.0,我必须使用以下学习率调度程序训练神经网络 160 个时期:
在第 80 和 120 个时期将学习率降低 10 倍,其中初始学习率 = 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))
这是正确的实施方式吗?
谢谢!
tf.keras.callbacks.LearningRateScheduler
需要一个以纪元索引作为输入(整数,从 0 开始索引)和 returns 新学习率作为输出(浮点数)的函数:
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)
这将在第 80 和 120 个时期将学习率降低 10 倍,并在所有其他时期保持不变。
我正在使用 Python 3.7 和 TensorFlow 2.0,我必须使用以下学习率调度程序训练神经网络 160 个时期:
在第 80 和 120 个时期将学习率降低 10 倍,其中初始学习率 = 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))
这是正确的实施方式吗?
谢谢!
tf.keras.callbacks.LearningRateScheduler
需要一个以纪元索引作为输入(整数,从 0 开始索引)和 returns 新学习率作为输出(浮点数)的函数:
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)
这将在第 80 和 120 个时期将学习率降低 10 倍,并在所有其他时期保持不变。