как импортировать с python3 файл pkl, сохраненный в python2 - PullRequest
2 голосов
/ 14 мая 2019

Я использую демо-код из транспортного средства-прогноза . Когда дело доходит до моделей в каталоге models, я могу загрузить эту модель model_2000_car_100_iter_v.pkl в Python2, но моя среда интеграции - Python3. Поэтому, когда я запускаю коды для загрузки модели в Python3, используя joblib.load(), возникают ошибки:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 1024: ordinal not in range(128)

и

    raise new_exc
  ValueError: You may be trying to read with python 3 a joblib pickle generated with python 2. This is not feature supported by joblib.

Я пытаюсь понять это, ссылаясь на маринованные, потому что joblib упоминается как маринованные. так что pickle doc говорит, что encoding = 'latin1' может избежать этой проблемы, но безуспешно. И я также пробую кодировку iso-8859-1, которая также не удалась.

import pickle
picklefile=open('model_2000_car_100_iter_v.pkl','rb')
data=pickle.load(picklefile,encoding='iso-8859-1')  # or 'latin1'

Я вижу, что pickle позволяет пользователю сохранять модель в Python3 и загружать ее в Python2, используя параметр protocol, но как я могу сделать это в обратном порядке? Есть ли способ загрузить модель в другую версию Python, используя joblib?

...