2017-10-13 17 views
1

Je peux vider les modèles sklearn à GridFS:Impossible de charger JOBLIB modèle sérialisé de GridFS

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

Cela fonctionne et je peux voir le modèle stocké dans mon Mongo.

Mais je ne peux pas lire directement à partir GridFS:

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

Cela prend pour toujours et ne se termine jamais. Cependant, cela fonctionne (et se termine rapidement):

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

Qu'est-ce qui me manque?

Répondre

2

Une meilleure solution consiste d'abord à la lecture du fichier à une variable, puis le convertir en un flux, comme suit:

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