是否可以重新训练以前保存的 keras 模型?

Nuw*_*wan 6 python neural-network keras tensorflow

我正在使用 keras 和 tensorflow 进行时间序列预测。我需要用未来的数据重新训练模型。我的问题是,这在 keras 中是否可行,我们如何做到这一点?

Veg*_*dKT 17

是的。

将模型另存为 .h5

当你想训练你的模型时,再次加载它并像往常一样执行 model.fit 。

确保在加载模型后不要编译模型,因为这会重置您的权重。

查看此链接了解更多信息


Vis*_*ati 6

我正在更新任何新用户的答案,因为它已经很久以前了。如果您使用的是最近的Tensorflow(例如TF2.1或以后),那么您可以如上所述重新训练模型。

有两个重要选项(以 *.tf 格式保存和以 *.h5 格式保存)。两个选项的保存类似,但加载保存的模型有所不同。

1.以*.tf格式保存

当您加载保存的模型时,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)
Run Code Online (Sandbox Code Playgroud)

2.以*.h5格式保存

当您加载保存的模型时,compile = True默认为 ,它将显示如下警告。

WARNING:tensorflow:Error in loading the saved optimizer state. As a result, your model is starting with a freshly initialized optimizer
Run Code Online (Sandbox Code Playgroud)

上述错误意味着它将使用新初始化的优化器。加载保存的模型后,您可以像往常一样使用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')
Run Code Online (Sandbox Code Playgroud)

在此处查看详细示例

另一个最重要的一点是,当你有一个custom_objects时,那么你需要compile=False在加载模型时选择,然后用custom_objects编译模型。以上两种方法都是如此。

希望这可以帮助。谢谢!