将总时期计数添加到LearningRateScheduler()keras中的拟合数

时间:2019-07-11 06:18:30

标签: keras deep-learning

我正在寻找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()来称呼它?
  • 对于亚当优化器来说,这是否合理?

0 个答案:

没有答案