我正在寻找this post和@Rubens_Zimbres的答案。我希望像this report(在最后一段的“ 3.建筑”部分中)那样,每5个时代将学习率乘以0.95。为此,我正在使用git中的代码。
我简化了训练循环:
for epoch_cnt in range(nb_epoch):
lrate=LearningRateScheduler(keras_model.step_decay)
hist = model.fit_generator(X_train,y_train,nb_epoch=5,callbacks=lrate)
在另一个文件(keras_model)中,我实现了衰减功能:
def step_decay(epoch):
initial_lrate = 0.001
drop = 0.95
lrate = initial_lrate * (drop**(np.floor(epoch/5)))
print(lrate)
return lrate
输出如下:
第1/5版
0.001
- 4秒-损失:0.6610-损失值:1.0149时代2/5
0.001
- 4s-损失:0.7534-val_loss:1.0996时代3/5
0.001
- 4s-损失:0.6687-val_loss:0.3643纪元4/5
0.001
- 4秒-损失:0.7048-损失值:1.1870时代5/5
0.001
- 4秒-损失:0.6675-损失值:0.5315
一个明显的问题是,每次调用fit_generator()
时,Keras的时期号都会重置为0。我有两个问题:
def step_decay(epoch,total)
一样添加总数吗?我怎么从fit_generator()
来称呼它?