После создания модели FastText с использованием Gensim я хочу загрузить ее, но сталкиваюсь с ошибками, которые, по-видимому, связаны с обратными вызовами.
Код, используемый для создания модели:
TRAIN_EPOCHS = 30
WINDOW = 5
MIN_COUNT = 50
DIMS = 256
vocab_model = gensim.models.FastText(sentences=model_input,
size=DIMS,
window=WINDOW,
iter=TRAIN_EPOCHS,
workers=6,
min_count=MIN_COUNT,
callbacks=[EpochSaver("./ftchkpts/")])
vocab_model.save('ft_256_min_50_model_30eps')
, а обратный вызов EpochSaver
определяется как
from gensim.models.callbacks import CallbackAny2Vec
class EpochSaver(CallbackAny2Vec):
'''Callback to save model after each epoch and show training parameters '''
def __init__(self, savedir):
self.savedir = savedir
self.epoch = 0
os.makedirs(self.savedir, exist_ok=True)
def on_epoch_end(self, model):
savepath = os.path.join(self.savedir, f"ft256_{self.epoch}e")
model.save(savepath)
print(f"Epoch saved: {self.epoch + 1}")
if os.path.isfile(os.path.join(self.savedir, f"ft256_{self.epoch-1}e")):
os.remove(os.path.join(self.savedir, f"ft256_{self.epoch-1}e"))
print("Previous model deleted ")
self.epoch += 1
Помимо типа модели, этоидентичен моему процессу для Word2Vec, который работал без проблем. Однако, когда я открываю другой файл и пытаюсь загрузить модель с
from gensim.models import FastText
vocab = FastText.load(r'vocab/ft_256_min_50_model_30eps')
, меня приветствует ошибка
AttributeError: Can't get attribute 'EpochSaver' on <module '__main__'>
Что я могу сделать, чтобы загрузить словарь, чтобы я мог создать слой встраивания для моей модели keras? Если это актуально, это происходит в JupyterLab.