运行时错误:加载 SrlBert 的状态字典时出错 缺少键:['bert_model.embeddings.position_ids'] 意外键:[]



我只是NLP的初学者,并试图通过实现来学习语义角色标签的概念。我试图从allennlp的公共存储中加载基于bert的srl模型。但面临以下错误:

from allennlp.predictors.predictor import Predictor
predictor = Predictor.from_path("https://storage.googleapis.com/allennlp-public-models/bert-base-srl-2020.03.24.tar.gz")
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
~AppDataLocalTemp/ipykernel_11672/96061884.py in <module>
1 from allennlp.predictors.predictor import Predictor
----> 2 predictor = Predictor.from_path("https://storage.googleapis.com/allennlp-public-models/bert-base-srl-2020.03.24.tar.gz")
~anaconda3libsite-packagesallennlppredictorspredictor.py in from_path(cls, archive_path, predictor_name, cuda_device, dataset_reader_to_load, frozen, import_plugins, overrides, **kwargs)
364             plugins.import_plugins()
365         return Predictor.from_archive(
--> 366             load_archive(archive_path, cuda_device=cuda_device, overrides=overrides),
367             predictor_name,
368             dataset_reader_to_load=dataset_reader_to_load,
~anaconda3libsite-packagesallennlpmodelsarchival.py in load_archive(archive_file, cuda_device, overrides, weights_file)
233             config.duplicate(), serialization_dir
234         )
--> 235         model = _load_model(config.duplicate(), weights_path, serialization_dir, cuda_device)
236 
237         # Load meta.
~anaconda3libsite-packagesallennlpmodelsarchival.py in _load_model(config, weights_path, serialization_dir, cuda_device)
277 
278 def _load_model(config, weights_path, serialization_dir, cuda_device):
--> 279     return Model.load(
280         config,
281         weights_file=weights_path,
~anaconda3libsite-packagesallennlpmodelsmodel.py in load(cls, config, serialization_dir, weights_file, cuda_device)
436             # get_model_class method, that recurses whenever it finds a from_archive model type.
437             model_class = Model
--> 438         return model_class._load(config, serialization_dir, weights_file, cuda_device)
439 
440     def extend_embedder_vocab(self, embedding_sources_mapping: Dict[str, str] = None) -> None:
~anaconda3libsite-packagesallennlpmodelsmodel.py in _load(cls, config, serialization_dir, weights_file, cuda_device)
378 
379         if unexpected_keys or missing_keys:
--> 380             raise RuntimeError(
381                 f"Error loading state dict for {model.__class__.__name__}nt"
382                 f"Missing keys: {missing_keys}nt"
RuntimeError: Error loading state dict for SrlBert
Missing keys: ['bert_model.embeddings.position_ids']
Unexpected keys: []

有人知道解决办法吗?

如果使用allennlp-models的更高版本,则可以使用此archive_file:https://storage.googleapis.com/allennlp-public-models/structured-prediction-srl-bert.2020.12.15.tar.gz

模型存档文件的最新版本可以在"模型卡"选项卡的演示页面上找到:https://demo.allennlp.org/semantic-role-labeling

最新更新