【问题标题】:Creating a pickle file for a machine learning model为机器学习模型创建 pickle 文件
【发布时间】:2019-09-05 14:20:15
【问题描述】:

我想要做的是在 pickle 对象中加载用于生成摘要的机器学习模型,这样当我将代码部署到我的 Web 应用程序时,它就不会一遍又一遍地进行手动加载。这需要相当长的时间,我不能让用户在模型加载然后生成摘要时等待 10-15 分钟。

    import cPickle as pickle
    from skip_thoughts import configuration
    from skip_thoughts import encoder_manager
    import en_coref_md

    def load_models():
        VOCAB_FILE = "skip_thoughts_uni/vocab.txt"
        EMBEDDING_MATRIX_FILE = "skip_thoughts_uni/embeddings.npy"
        CHECKPOINT_PATH = "skip_thoughts_uni/model.ckpt-501424"
        encoder = encoder_manager.EncoderManager()
        print "loading skip model"
        encoder.load_model(configuration.model_config(),
            vocabulary_file=VOCAB_FILE,
            embedding_matrix_file=EMBEDDING_MATRIX_FILE,
            checkpoint_path=CHECKPOINT_PATH)
        print "loaded"
        return encoder

    encoder= load_models()
    print "Starting cPickle dumping"
    pickle.dump(encoder, open('/path_to_loaded_model/loaded_model.pkl', "wb"))
    print "pickle.dump executed"
    print "starting cpickle loading"
    loaded_model = pickle.load(open('loaded_model.pkl', 'r'))
    print "pickle load done"

cPickle 最初是泡菜,但他们都没有在足够的时间内做到这一点。我第一次尝试这样做时,创建的泡菜文件是 11.2GB,我认为这太大了。同时花了一个多小时才使我的电脑无法使用。并且代码没有执行完毕,我强制重启了我的电脑,因为它花费了太长时间。

如果有人能提供帮助,我将不胜感激。

【问题讨论】:

标签: python nlp pickle


【解决方案1】:

我建议检查存储到 hdf5 是否可以提高性能:

写入 hdf5:

with h5py.File('model.hdf5', 'w') as f:
    for var in tf.trainable_variables():
        key = var.name.replace('/', ' ')
        value = session.run(var)
        f.create_dataset(key, data=value)

从 hdf5 读取:

with h5py.File('model.hdf5', 'r') as f:
    for (name, val) in f.items()
        name = name.replace(' ', '/')
        val = np.array(val)
        session.run(param_setters[name][0], { param_setters[name][1]: val })

来源:

https://www.tensorflow.org/tutorials/keras/save_and_restore_models

https://geekyisawesome.blogspot.com/2018/06/savingloading-tensorflow-model-using.html

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 2020-12-02
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2017-09-16
    • 2016-10-27
    相关资源
    最近更新 更多