无法从 GridFS 加载 joblib 序列化模型
Posted
技术标签:
【中文标题】无法从 GridFS 加载 joblib 序列化模型【英文标题】:Cannot load joblib serialized model from GridFS 【发布时间】:2018-03-25 07:08:03 【问题描述】:我可以将 sklearn 模型转储到 gridFS :
import gridfs
fs = gridfs.GridFS(db)
gridFS_file = fs.new_file()
joblib.dump(vectorizer, gridFS_file)
这可行,我可以看到存储在我的 Mongo 中的模型。
但我无法直接从 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")
我错过了什么?
【问题讨论】:
【参考方案1】:更好的解决方法是首先将文件读取到变量中,然后将其转换为流,如下所示:
joblib.load(io.BytesIO(new_file.read()))
【讨论】:
以上是关于无法从 GridFS 加载 joblib 序列化模型的主要内容,如果未能解决你的问题,请参考以下文章
ImportError:无法从“sklearn.externals”导入名称“joblib”
nginx+gridfs+mongodb 配置访问png图片显示无法加载问题
无法从 sklearn.externals.joblib 导入 Sklearn