2017-10-13 51 views
1

加载JOBLIB序列化模式,我可以转储sklearn模型GridFS的:无法从GridFS的

import gridfs 
fs = gridfs.GridFS(db) 
gridFS_file = fs.new_file() 
joblib.dump(vectorizer, gridFS_file) 

这工作,我可以看到存储在我的蒙戈模型。

但我不能直接从GridFS的阅读:

from bson.objectid import ObjectId 
new_file = fs.get(ObjectId("59df36ebe46a520014e0771d")) 
vectorizer2 = joblib.load(new_file) 

这永远需要和永远不会完成。然而,这工作(并迅速结束):

with open('vec.pkl', 'wb') as f: 
    f.write(new_file.read()) 
    vectorizer3 = joblib.load("vec.pkl") 

我错过了什么?

回答

2

一个更好的解决方法由第一读取该文件到一个变量,然后将其转换为一个流,如下:

joblib.load(io.BytesIO(new_file.read()))