首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从tensorflow检查点读取finetuning

无法从tensorflow检查点读取finetuning
EN

Stack Overflow用户
提问于 2019-08-19 18:36:23
回答 1查看 484关注 0票数 1

我正在尝试使用一个预先训练的伯特模型,用SST2数据处理器进行微调。但是当我给出预训练模型的检查点时,它显示的是“在检查点中找不到密钥output_bias”。

我想这可能是因为预先训练过的伯特模型检查站出了差错。所以我又做了一次训练。但是,我仍然面临着同样的问题。

代码语言:javascript
复制
TASK = 'STS' #@param {type:\"string\"}
TASK_DATA_DIR = 'glue_data/STS-B/'# + TASK

output_dir = 'trained_model/observation'
tf.gfile.MakeDirs(output_dir)

BERT_MODEL = path + 'multi_cased_L-12_H-768_A-12/' 
VOCAB_FILE = os.path.join(BERT_MODEL, 'vocab.txt')   
CONFIG_FILE = os.path.join(BERT_MODEL, 'bert_config.json')   
INIT_CHECKPOINT = os.path.join(BERT_MODEL, 'bert_model.ckpt')   
DO_LOWER_CASE = BERT_MODEL.startswith('cased')

tokenizer = tokenization.FullTokenizer(vocab_file=VOCAB_FILE, 
do_lower_case=DO_LOWER_CASE)

TRAIN_BATCH_SIZE = 1   
EVAL_BATCH_SIZE = 8   
PREDICT_BATCH_SIZE = 8   
LEARNING_RATE = 2e-5   
NUM_TRAIN_EPOCHS = 3.0   
MAX_SEQ_LENGTH = 128   

processors = {   
    "sts": run_classifier.StsProcessor,    
}   

processor = processors[TASK.lower()]()    
label_list = processor.get_labels()   

错误是:

NotFoundError:从检查点恢复失败。这很可能是由于检查点中缺少的变量名称或其他图形键造成的。请确保您没有根据检查点更改预期的图形。原始错误:在检查点[节点保存/RestoreV2 2(定义在/home/subraas3/.conda/envs/tensorflow_13/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py:1403)处)][节点保存/RestoreV2 2(定义于/home/subraas3/.conda/envs/tensorflow_13/lib/python3.7/site-packages/tensorflow_estimator/python/estimator/estimator.py:1403))]中找不到密钥output_bias

EN

回答 1

Stack Overflow用户

发布于 2019-08-20 05:15:40

正如错误消息中所指出的,此错误发生在

  1. tf计算图中的一个层被重命名。也就是说,预先训练过的检查点中的层名与所提供的API中的名称不同。
  2. 在API中增加了一个新的层,即改变网络体系结构。或,
  3. 删除预先训练过的检查点中存在的层(unlikey)。

请检查bert API的版本是否与预培训的检查点版本相同。如果它们是相同的,您可能需要使用此工具。手动检查检查点中的tf图是否与API一致。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57562244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档