【发布时间】:2019-01-22 01:56:09
【问题描述】:
我正在使用 keras 和 tensorflow 进行时间序列预测。我需要用未来的数据重新训练模型。我的问题是,这在 keras 中是否可行,我们如何做到这一点?
【问题讨论】:
标签: python tensorflow neural-network keras
我正在使用 keras 和 tensorflow 进行时间序列预测。我需要用未来的数据重新训练模型。我的问题是,这在 keras 中是否可行,我们如何做到这一点?
【问题讨论】:
标签: python tensorflow neural-network keras
【讨论】:
我正在为任何新用户更新答案,因为这是很久以前的事了。如果您使用的是最近的Tensorflow(例如TF2.1 或更高版本),则可以如上所述重新训练模型。
有两个重要的选项(保存为 *.tf 格式和保存为 *.h5 格式)。两种选项的保存方式相似,但加载保存的模型时有所不同。
当您加载保存的模型时,compile = True 默认为默认值,它将保留权重而不会出现任何问题。加载保存的模型后,您可以像往常一样使用loaded_model.fit() 重新训练。
model.save('./MyModel_tf',save_format='tf')
# loading the saved model
loaded_model = tf.keras.models.load_model('./MyModel_tf')
# retraining the model
loaded_model.fit(x_train, y_train, epochs = 10, validation_data = (x_test,y_test),verbose=1)
当你加载保存的模型时,compile = True 是默认的,它会显示如下警告。
WARNING:tensorflow:Error in loading the saved optimizer state. As a result, your model is starting with a freshly initialized optimizer
上述错误意味着它将使用新初始化的优化器。加载保存的模型后,您可以像往常一样使用loaded_model.fit() 重新训练。
model.save('./MyModel_h5.h5', save_format='h5')
# loading the saved model
loaded_model_h5 = tf.keras.models.load_model('./MyModel_h5.h5')
请查看详细example here。
另外最重要的一点是,当你有custom_objects时,你需要在加载模型时选择compile=False,然后用custom_objects编译模型。上述两种方法都是如此。
希望这会有所帮助。谢谢!
【讨论】: