Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning RuntimeError:BertModel在加载状态下的错误_Machine Learning_Deep Learning_Pytorch_Transfer Learning - Fatal编程技术网

Machine learning RuntimeError:BertModel在加载状态下的错误

Machine learning RuntimeError:BertModel在加载状态下的错误,machine-learning,deep-learning,pytorch,transfer-learning,Machine Learning,Deep Learning,Pytorch,Transfer Learning,我使用hugging face transformer库对一个伯特模型进行微调,并在云中的GPU中对其进行训练。然后我保存模型和标记器,如下所示: model.save_pretrained('/saved_model/') torch.save(best_model.state_dict(), '/saved_model/model') tokenizer.save_pretrained('/saved_model/') 我将保存的\u model目录下载到我的计算机中。然后,我将模型/标记

我使用hugging face transformer库对一个伯特模型进行微调,并在云中的GPU中对其进行训练。然后我保存模型和标记器,如下所示:

model.save_pretrained('/saved_model/')
torch.save(best_model.state_dict(), '/saved_model/model')
tokenizer.save_pretrained('/saved_model/')
我将
保存的\u model
目录下载到我的计算机中。然后,我将模型/标记器加载到我的计算机中,如下所示

import torch
from transformers import *
tokenizer = BertTokenizer.from_pretrained('./saved_model/')
config = BertConfig('./saved_model/config.json')
model = BertModel(config)
model.load_state_dict(torch.load('./saved_model/pytorch_model.bin', map_location=torch.device('cpu')))
model.eval()
但是它为
model.load\u state\u dict
行抛出以下错误

RuntimeError: Error(s) in loading state_dict for BertModel:
    Missing key(s) in state_dict:
它列出了一堆显然从州目录中丢失的钥匙

我是pytorch的新手,不知道发生了什么。很可能我没有以正确的方式保存模型


请建议。

您可能知道,PyTorch模块的
状态是一个
OrderedDict
。当您试图从
状态dict
加载模块权重时,它会抱怨缺少键,这意味着
状态dict
不包含这些键。在这种情况下,我建议采取以下行动

  • 检查
    状态中存在哪些键。听起来不可能只保存密钥的子集
  • 此外,请确保已加载正确的配置。否则,如果您训练的BertModel和您要为其加载权重的新BertModel不同,则您将收到此错误
  • 最后,如果您的代码通过了上述两种情况,那么保存模型时,请确保在文件中保存所有层的参数。语句,
    torch.save(best_model.state_dict(),“/saved_model/model”)
    看起来不错,但请确保
    best_model.state_dict()
    包含所有预期的键