浅谈Learning Rate
1.1 简介
1.2 示意图
Learning Rate的策略(3种)
2.1 Fixed Learning Rate
2.2 Reduce Learning Rate
2.3 Cyclical Learning Rate
浅谈Learning Rate
1.1 简介
1.2 示意图
图片来自於:Aaron Chen-机器学习与深度学习精要
Learning Rate的策略(3种)
2.1 Fixed Learning Rate
简介:训练模型时,采用固定的学习率。
困境:到模型训练後期,仍使用固定的学习率,会发现收敛速度明显变慢,且容易找到局部最小值(Local minuma),而非最佳解(Global minima)。如下图。
图片来自於:https://www.twblogs.net/a/5efe3eb9e53eaf40aa872468
范例:Learning Rate固定为0.001
# 编译模型
model.compile(optimizer=Adam(lr=0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])
2.2 Reduce Learning Rate
简介:到模型训练後期,模型逐渐接近全局最小值(Global minima),适度地降低学习率,有助於找到最佳解(Global minima)。
困境:模型仍有可能陷入鞍点(Saddle Point),影响效能。
鞍点(Saddle Point):模型训练後期,其一阶梯度已经趋近0,但是从不同的维度观察,维度1时,可能是极小值;维度2时,可能是极大值。
图片来自於:https://read01.com/PM43jxj.html#.YVGUNZpByUk
常用的衰降方法
※注:详细说明可参考此处
我们挑选ReduceLROnPlateau进行Reduce Learning Rate,范例如下。
# 设定lr降低条件(0.001 → 0.005 → 0.0025 → 0.00125 → 下限:0.0001)
reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.5,
patience=5, mode='min', verbose=1,
min_lr=1e-4)
# 训练模型时,以Callbacks监控,呼叫reduce_lr调整Learning Rate值
history = model.fit_generator(train_generator,
epochs=8, verbose=1,
steps_per_epoch=train_generator.samples//batch_size,
validation_data=valid_generator,
validation_steps=valid_generator.samples//batch_size,
callbacks=[checkpoint, estop, reduce_lr])
2.3 Cyclical Learning Rate
# 定义CLR後,呼叫CyclicLR
from clr_callback import CyclicLR
# 设置CyclicLR
EPOCHS = 8
test_step_size = (train_generator.samples * EPOCHS) / train_generator.batch_size
# step_size计算公式为train sample size/batch size * p (p为2-10倍)
step_size = 6000
clr = CyclicLR(step_size=test_step_size)
# 训练模型时,以Callbacks监控,呼叫clr调整Learning Rate值
history = model.fit_generator(train_generator,
epochs=8,
steps_per_epoch=train_generator.samples//batch_size,
validation_data=valid_generator,
validation_steps=valid_generator.samples//batch_size,
callbacks=[checkpoint, estop, clr])
让我们继续看下去...
<<: Day 27 利用transformer自己实作一个翻译程序(九) Point wise feed forward network
>>: 学习Python纪录Day12 - Python模组
我们今天来聊聊TensorFlow运算的几个较为常用的方法,不像其他语言的加减乘除,TensorFl...
前面介绍了如何用JSX语法建立React元素,接着这篇会记录如何建立React元件,即前面提到的Re...
六边形架构图 (Hexagonal Architecture Diagram) 是一种用於软件设计的...
不怎麽重要的前言 上一篇介绍了while loop的概念,让大家在回圈的使用上可以相对的弹性。 这次...
记得在KiKi吃到苍蝇头,让不爱吃韭菜的我也是搭着白饭一口接一口,而且苍蝇头做法简单材料单纯,只要韭...