如何保存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

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

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