Keras如何使用Adam优化器恢复训练

2024-05-16 15:11:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我的模型需要运行多个时代才能得到好的结果,而且在Google云上使用v100需要几个小时。在

因为我是一个抢占先机的人,所以在训练过程中我就被踢出局了。我希望能从它停止的地方恢复。在

在我的自定义回调中,我运行self.model.save(…)在新纪元末。如果在过去的50个时代里分数没有提高,它也会停止训练。在

以下是我尝试的步骤:

  1. 我跑了模型.拟合直到第250个纪元之后的早期止损(最好的分数是在第200个纪元)
  2. 我加载了100世纪后保存的模型。在
  3. 我跑了模型.拟合初始_epoch=100。(它从纪元101开始。)

然而,要赶上第一轮,还需要一段时间。同时,每个历元的准确度得分接近第一次,但要低一些。最后,早停大约300分,最后的分数比第一次低。我能得到相同的最终分数的唯一方法是从头开始创建模型并从epoch 1开始运行fit。在

我还试着利用float(K.get_值(self.model.optimizer.lr)和K.set_值(self.model.optimizer.lr,新的\u lr)。 然而,self.model.optimizer.lr始终返回相同的数字。我假设这是因为adam优化器根据我用adam设置的初始lr计算实际lr(lr=1e-4)。在

我想知道使用Adam optimizer恢复培训的正确方法是什么?在


Tags: 方法模型selfmodelgoogle分数optimizer小时
2条回答

I'm wondering what's the right approach to resume training using Adam optimizer?

如前所述:https://keras.io/getting-started/faq/#how-can-i-save-a-keras-modelmodel.save()后跟{}将负责使用保存的训练配置编译模型。在

if not os.path.exists('tf_keras_cifar10.h5'):
    model = get_model() #this method constructs the model and compiles it 
else:
    model = load_model('tf_keras_cifar10.h5') #load the model from file
    print('lr is ', K.get_session().run(model.optimizer.lr))
    initial_epoch=10
    epochs=13

history = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs,validation_data=(x_test, y_test), initial_epoch=initial_epoch)
model.save('tf_keras_cifar10.h5')
  • 在保存模型之前的初始运行结束时

纪元10/10 损失=0.785美元=0.885美元=0美元

  • 从保存的模型恢复:

纪元11/13 50000/50000[===============================]-15s 293us/样品-损耗:0.6438-acc:0.7777-val_损耗:0.8732-val峈acc:0.7083

请检查此问题以及与使用Adam优化器恢复培训相关的问题(特斯拉斯):{a2}

建议升级TF版本。在

model.load('saved.h5')怎么样。{不过,如果优化程序^也应该保存它。在

相关问题 更多 >