【问题标题】:How To Save Keras Regressor Model?如何保存 Keras 回归模型?
【发布时间】:2018-12-14 13:18:52
【问题描述】:

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

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('Dataset Samples: {}'.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('Results: {0}.2f ({1}.2f MSE'.format(results.mean(), results.std()))

【问题讨论】:

    标签: python tensorflow machine-learning scikit-learn keras


    【解决方案1】:

    cross_val_score 克隆提供的估计器,将它们拟合到训练折叠,测试折叠得分。所以基本上,你的实际模型还没有安装。

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

    model.fit(X, Y)
    

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

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

    现在,当您想再次加载模型时,请执行以下操作:

    from keras.models import load_model
    
    # Instantiate the model as you please (we are not going to use this)
    model2 = KerasRegressor(build_fn=model_build_fn, epochs=10, batch_size=10, verbose=1)
    
    # This is where you load the actual saved model into new variable.
    model2.model = load_model('hh.h5')
    
    # Now you can use this to predict on new data (without fitting model2, because it uses the older saved model)
    model2.predict(X)
    

    【讨论】:

    • 好的,感谢您的精彩回答并解决问题!
    • 这很好用,谢谢。但是我仍然不明白为什么KerasRegressor 强制您重新创建一个新实例并将其初始化为先前训练的模型(即使不使用它,从概念上讲它违反了保存模型以持久化它的概念) .
    • @gented 因为KerasRegressor 是由model 表示的实际keras 模型的sklearn 兼容包装器,并且模组并没有将该功能添加到包装器中。
    • 请注意:这也适用于tf.keras.wrappers.scikit_learn.KerasClassifier
    猜你喜欢
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2020-12-30
    • 2015-05-25
    • 2018-05-02
    • 1970-01-01
    • 2022-07-25
    • 2021-12-28
    相关资源
    最近更新 更多