如何保存Keras回归模型?

如何在训练后保存模型权重?

Keras提供了以下方法:

model.save(‘weights.h5’)

模型对象是通过build_fn属性函数初始化的,保存是如何完成的?

def model():
    model = Sequential()
    model.add(Dense(10, activation='relu', input_dim=5))
    model.add(Dense(5, activation='relu'))
    model.add(Dense(1, kernel_initializer='normal'))
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model

if __name__ == '__main__':
    X, Y = process_data()
    print('数据集样本数: {}'.format(len(Y)))
    model = KerasRegressor(build_fn=model,
                           epochs=10,
                           batch_size=10,
                           verbose=1)
    kfold = KFold(n_splits=2, random_state=seed)
    results = cross_val_score(model, X, Y, cv=kfold)
    print('结果: {0:.2f} ({1:.2f} MSE'.format(results.mean(), results.std()))

回答:

cross_val_score 会克隆提供的估计器,在训练折上拟合它们,并在测试折上评分。因此,实际上你的模型尚未被拟合。

所以首先你需要在数据上拟合模型:

model.fit(X, Y)

然后你可以使用底层的model属性(它实际存储了keras模型)来调用save()save_weights()方法。

model.model.save('saved_model.h5')

当你想要再次加载模型时,这样做:

from keras.models import load_model
# 按你的需要实例化模型(我们不会使用这个)
model2 = KerasRegressor(build_fn=model_build_fn, epochs=10, batch_size=10, verbose=1)
# 这里你将实际保存的模型加载到新变量中。
model2.model = load_model('hh.h5')
# 现在你可以使用它在新数据上进行预测(无需拟合model2,因为它使用了之前保存的模型)
model2.predict(X)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注