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

时间:2018-08-15 07:19:32

标签: python tensorflow neural-network keras

我正在使用keras和tensorflow进行时间序列预测。我需要使用将来的数据重新训练模型。我的问题是,这在喀拉拉邦有可能吗?我们该怎么做?

2 个答案:

答案 0 :(得分:3)

由于很久以前,我正在为任何新用户更新答案。如果您使用的是最近的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)

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

上述错误意味着它将使用新近初始化的优化器。加载保存的模型后,您可以像往常一样使用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编译模型。以上两种方法都是如此。

希望这会有所帮助。谢谢!

答案 1 :(得分:1)

是。

将模型另存为.h5

当您要训练模型时,请再次加载它,然后像往常一样进行一次模型拟合。

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

有关更多信息,请参见此link