Python Keras如何使用Adam Optimizer恢复培训
我的模型需要运行多个时代才能得到好的结果,在谷歌云上使用v100需要几个小时 因为我是一个先发制人的例子,在训练中我就被踢了。我希望能够从它停止的地方继续 在我的自定义回调中,我运行self.model.save(…)\u epoch\u end。此外,如果分数在过去50个时期内没有提高,它将停止训练 以下是我尝试的步骤:Python Keras如何使用Adam Optimizer恢复培训,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,我的模型需要运行多个时代才能得到好的结果,在谷歌云上使用v100需要几个小时 因为我是一个先发制人的例子,在训练中我就被踢了。我希望能够从它停止的地方继续 在我的自定义回调中,我运行self.model.save(…)\u epoch\u end。此外,如果分数在过去50个时期内没有提高,它将停止训练 以下是我尝试的步骤: 我一直运行model.fit,直到第250纪元之后的早期停止(最好的分数是在第200纪元) 我加载了第100个纪元后保存的模型 我运行model.fit,初始值为100。(它
我想知道使用Adam optimizer恢复培训的正确方法是什么?关于
model.load('saved.h5')
呢。如果使用model.save()
保存优化器,它也应该加载优化器
我想知道使用Adam optimizer恢复培训的正确方法是什么
如本文所述:,model.save()
后跟load\u model()
将负责使用保存的培训配置编译模型
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')
- 在保存模型之前的初始运行结束时
- 从保存的模型恢复:
- 关于
:它返回您设置的初始学习速率,根据该速率计算历元和梯度上使用的实际学习速率self.model.optimizer.lr
- Adam optimizer使用的变量不仅仅是学习率,因此为了确保完全恢复其状态,您可以调用
model.optimizer
- 一个好的做法是初始化模型和优化器,然后使用检查点更新状态字典:
# ============ Load Checkpoint ============ model = keras.models.load_model('trained_model.h5') # get weights modelWeights = model.get_weights() # get optimizer state as it was on last epoch modelOptimizer = model.optimizer # ============ Compile Model ============ # redefine architecture (newModel=models.Sequential(), etc.) newModel= redefine_your_model_architecture() # compile newModel.compile(optimizer=modelOptimizer, loss=loss, metrics=['accuracy']) # set trained weights newModel.set_weights(modelWeights) # ============ Resume Training ============ history = newModel.fit(...)
你是说tf.keras.models.load\u model?这就是我正在使用的,但它没有按预期工作。我怀疑这是因为LR没有得到恢复,而是从初始值开始。如果您运行像您提供的示例那样的几个历元,它看起来是有效的,但是如果您运行一个需要许多历元(如100或更多)的示例,它会有相当大的效果。我使用的是Tensorflow v1.13.1。我还没有试过Tensorflow 2.0 beta版。
initial\u epoch
arg是否会与“fresh”优化器一起工作,并通过load\u weights()
仅加载模型的权重?我问bc我的h5型文件在保存过程中由于VM崩溃而损坏,我只剩下h5型文件(一个单独的文件)…:/