AttributeError: не удается получить атрибут «токенизатор» в ‹модуле «__main__»›

Я обучил модель logistic regression текстовым данным и сохранил модель, используя pickle. Но для тестирования, когда я пытаюсь загрузить модель, я получаю сообщение об ошибке, упомянутое в заголовке, при выполнении следующей строки:

model = pickle.load(open("sentiment.model", "rb"))

Ниже приведен код, используемый для сохранения модели:

import pickle

print("[INFO] saving Model...")
f = open('sentiment.model', "wb")

# first I saved the best_estimator_
f.write(pickle.dumps(gs_lr_tfidf.best_estimator_))

# but again I saved the model completely without mentioning any attribute i.e: 
# f.write(pickle.dumps(gs_lr_tfidf))
# but none of them helped and I got the same error

f.close()
print("[INFO] Model saved!")

Эта ошибка не появляется, когда я загружаю модель в ту же записную книжку сразу после завершения процесса обучения (в той же среде выполнения). Но эта ошибка возникает, когда я пытаюсь загрузить модель отдельно в другой среде выполнения, даже если код загрузчика модели одинаков. Почему это происходит?


person hafiz031    schedule 07.09.2020    source источник
comment
Отвечает ли это на ваш вопрос? Невозможно загрузить файлы с помощью pickle и нескольких модулей   -  person jakub    schedule 07.09.2020
comment
@jakub Я видел этот вопрос, но не совсем понял, что делать.   -  person hafiz031    schedule 07.09.2020
comment
Не могли бы вы включить минимальный пример, который воспроизводит это поведение? Я предполагаю, что вам придется импортировать некоторые пакеты перед загрузкой модели.   -  person jakub    schedule 07.09.2020
comment
@jakub этот код сам по себе производит такое поведение. Я попытался поместить весь код, используемый для обучения (включая весь импорт, параметры поиска по сетке, информацию о конвейере и все, кроме функции fit() [поскольку я больше не тренирую ее]) перед загрузкой модели, и эта ошибка исчезла. Хотя я ничего явно не передал этой pickle.load() функции.   -  person hafiz031    schedule 07.09.2020