【发布时间】: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,我认为这太大了。同时花了一个多小时才使我的电脑无法使用。并且代码没有执行完毕,我强制重启了我的电脑,因为它花费了太长时间。
如果有人能提供帮助,我将不胜感激。
【问题讨论】:
-
你试过用hdf5吗?这是一个例子machinelearningmastery.com/save-load-keras-deep-learning-models
-
@VnC 模型是使用张量流而不是 keras 进行训练的。所以我认为像 model_from_json 这样的方法不起作用