注意区分两种BertForQuestionAnswering导入方式,上面一个是tensorflow,下面一个才是pytorch,反正我用第一种导入方式来加载模型时会报错。用pytorch的朋友,最好用第二种。
from transformers import BertForQuestionAnswering from pytorch_pretrained_bert import BertForQuestionAnsweringbert模型 进入这个网页后,大家可以自行下载不同的模型,我下载的是:BERT-Base, Uncased: 12-layer, 768-hidden, 12-head, 110M parameters 我的保存路径是:K:\码云\yu-ling-QuestionAnswerBot-master\uncased_L-12_H-768_A-12\uncased_L-12_H-768_A-12 (记住这个路径,后面会涉及到它) 下载完后,解压,将会看到 5 个 文件:如下图
上图这5个模型还不能直接被pytorch拿来使用,必须先进行转化,代码如下:
import shutil # 用来复制文件 from pytorch_pretrained_bert import convert_tf_checkpoint_to_pytorch BERT_MODEL_PATH = r'K:\码云\yu-ling-QuestionAnswerBot-master\uncased_L-12_H-768_A-12\uncased_L-12_H-768_A-12/'" # 注意文件路径 WORK_DIR = r"K:\码云\yu-ling-QuestionAnswerBot-master\uncased_L_12" # 转化后模型想要保存的路径,可以自定义 if __name__ == "__main__": convert_tf_checkpoint_to_pytorch.convert_tf_checkpoint_to_pytorch( BERT_MODEL_PATH + "bert_model.ckpt", BERT_MODEL_PATH + "bert_config.json", WORK_DIR + r'\pytorch_model.bin', ## pytorch_model.bin 是我们最终想要的模型 ) shutil.copyfile(BERT_MODEL_PATH + 'bert_config.json', WORK_DIR + r'\bert_config.json') # 把原来的'bert_config.json'文件拷贝到自定义目录下 shutil.copyfile(BERT_MODEL_PATH + 'vocab.txt', WORK_DIR + r'\vocab.txt') # 把原来的'vocab.txt'文件拷贝到自定义目录下执行完上述代码可以发现自定义目录下有了3个我们最终想要的模型:
这篇文章只是为了记录如何在pytorch中跑通问答demo,后面训练过程可以在这个基础上进行优化 ><