Не удается загрузить сериализованную модель joblib из GridFS

Я могу сбросить модели 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")

Что мне не хватает?


person Maxime Maillot    schedule 13.10.2017    source источник


Ответы (1)


Лучший обходной путь состоит в том, чтобы сначала прочитать файл в переменную, а затем преобразовать его в поток, как показано ниже:

joblib.load(io.BytesIO(new_file.read()))
person clemp6r    schedule 13.10.2017