【问题标题】:Loading saved NER transformers model causes AttributeError?加载保存的 NER 变压器模型会导致 AttributeError?
【发布时间】:2021-01-04 09:47:55
【问题描述】:

我已经使用

训练并保存了一些 NER 模型
torch.save(model)

我需要加载这些模型文件(扩展名.pt)以供评估使用

torch.load('PATH_TO_MODEL.pt')

我收到以下错误:'BertConfig' object has no attribute 'return_dict'

同样,我将我的转换器包更新为最新的,但错误仍然存​​在。

这是堆栈跟踪:

Traceback (most recent call last):
File "/home/systematicReviews/train_mtl_3.py", line 523, in <module>
test_loss, test_cr, test_cr_fine = evaluate_i(test_model, optimizer, scheduler, validation_dataloader, args, device)
File "/home/systematicReviews/train_mtl_3.py", line 180, in evaluate_i
e_loss_coarse, e_output, e_labels, e_loss_fine, e_f_output, e_f_labels, mask, e_cumulative_loss  = defModel(args, e_input_ids, attention_mask=e_input_mask, P_labels=e_labels, P_f_labels=e_f_labels)
File "/home/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/torch/nn/modules/module.py", line 541, in __call__
result = self.forward(*input, **kwargs)
File "/home/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 150, in forward
return self.module(*inputs[0], **kwargs[0])
File "/home/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/torch/nn/modules/module.py", line 541, in __call__
result = self.forward(*input, **kwargs)
File "/home/systematicReviews/models/mtl/model.py", line 122, in forward
attention_mask = attention_mask
File "/home/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/torch/nn/modules/module.py", line 541, in __call__
result = self.forward(*input, **kwargs)
File "/home/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/transformers/modeling_bert.py", line 784, in forward
return_dict = return_dict if return_dict is not None else self.config.use_return_dict
File "/home/anaconda3/envs/systreviewclassifi/lib/python3.6/site-packages/transformers/configuration_utils.py", line 219, in use_return_dict
return self.return_dict and not self.torchscript
AttributeError: 'BertConfig' object has no attribute 'return_dict'

以下是有关我的系统的更多信息:

- `transformers` version: 3.1.0
- Platform: Linux-4.4.0-186-generic-x86_64-with-debian-stretch-sid
- Python version: 3.6.9
- PyTorch version (GPU?): 1.3.1 (True)
- Tensorflow version (GPU?): not installed (NA)
- Using GPU in script?: Yes
- Using distributed or parallel set-up in script?: No

到目前为止,它工作得很好,但突然出现了这个错误。任何帮助或提示表示赞赏。

【问题讨论】:

    标签: torch huggingface-transformers


    【解决方案1】:

    尝试使用model.save_pretrained(output_dir) 保存您的模型。然后您可以使用model = *.from_pretrained(output_dir) 加载您的模型,其中* 是模型类(例如BertForTokenClassification)。

    【讨论】:

      【解决方案2】:

      保存模型字典而不是整个模型略有不同。而不是torch.save(model) 使用torch.save('path_to_the_model/model.pth') 并使用torch.load('path_to_the_model/model.pth') 加载。

      【讨论】:

        猜你喜欢
        • 2020-05-04
        • 1970-01-01
        • 2020-03-05
        • 2021-01-26
        • 2019-08-07
        • 2021-06-04
        • 2020-08-18
        • 2021-03-04
        • 2014-03-25
        相关资源
        最近更新 更多