簡體   English   中英

從 pickle 文件加載 spacy model 時出錯

[英]Error while loading spacy model from the pickle file

從 pickle 文件加載 spacy NER model 時出現以下錯誤。

self.model = pickle.load(open(model_path, 'rb')) 
Traceback (most recent call last):   
File "C:\Program Files\JetBrains\PyCharm Community Edition 2022.2.3\plugins\python-ce\helpers\pydev\pydevd.py", line 1496, in _exec     
pydev_imports.execfile(file, globals, locals)  # execute the script   File "C:\Program Files\JetBrains\PyCharm Community Edition 2022.2.3\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile     
exec(compile(contents+"\n", file, 'exec'), glob, loc)   File 
"C:\Projects\pythonworkspace\invoice_processing_prototype\invoice_data_extractor_notebook.py", line 101, in 
<module>     
extractor = InvoiceDataExtractor(model_dir_path, input_file_paths[0], config_path)   File 
"C:\Projects\pythonworkspace\invoice_processing_prototype\invoicedataextractor.py", line 27, in 
__init__ self.spatial_extractor = SpatialExtractor(model_dir_path, config_path)   
File "C:\Projects\pythonworkspace\invoice_processing_prototype\spatialextractor.py", line 54, in __init__     
self.inv_date = Model(f{self.model_dir_path}\\invoice_date_with_corrected_training_data_and_line_seperator_21_07_2022.pkl",   File 
"C:\Projects\pythonworkspace\invoice_processing_prototype\spatialextractor.py", line 34, in __init__     

self.model = pickle.load(open(model_path, 'rb'))   
File "stringsource", line 6, in spacy.pipeline.trainable_pipe.__pyx_unpickle_TrainablePipe _pickle.PickleError: 
Incompatible checksums (0x417ddeb vs (0x61fbab5, 0x27e6ee8, 0xbe56bc9) = (cfg, model, name, scorer, vocab))

運行以下代碼行時出現此錯誤:

self.model = pickle.load(open(model_path, 'rb'))

我已經使用 spacy 版本 3.1.2 訓練了 NER model,最近我將 spacy 升級到了最新的 3.4。 該錯誤可能是因為某些版本不兼容。 如果是這種情況,有人可以確認是否可以加載在 spacy 版本“3.1.2”上訓練的 spacy NER model 可以在升級的 spacy“3.4”上加載

環境

操作系統:Windows 10

Python 使用的版本:3.10

訓練時使用的 spaCy 版本:3.1.2

預測時使用的 spaCy 版本:3.4

我找到了解決此錯誤的一種方法。 spacy 3.1.2上,我加載了 pickle model 並使用保存

model = pickle.load(open(filepath, 'rb'))    
model.to_disc('my_model')

然后我將 spacy 版本更新到最新的spacy 3.4.4並這次重新加載了“my_model”。

model = spacy.load("my_model")
pickle.dump(model, open(filepath, 'wb'))  

在那種情況下,它對我有用而沒有錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM