谷歌BERT模型--调试MRPC任务--使用pycharm集成环境

谷歌BERT模型--MRPC调试心得

    • 唐宇迪BERT课程使用Pycharm实现MRPC

唐宇迪BERT课程使用Pycharm实现MRPC

1.任务介绍
MPRC(Microsoft Research Paraphrase Corpus)语料库中包含一些句子对,这些句子有些表示相同的意思,有些是不同的意思。本文主要使用BERT模型去做句子对的分类任务。官方代码及数据集可以访问我的码云,下载速度比Github快。
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第1张图片
如上图所示,为BERT用于微调句子对分类任务示意图,输入是两个句子的Embedding(包含词向量token embedding、位置编码position embedding、段编码segment embedding),输出是[CLS]。
2.调试代码
如下图所示为官网的Tendorflow版本要求,我自己用的是Tensorflow1.13。如果自己的Tensorflow是2.0版本及以上,还是建议新建一个Tensorflow1.X的环境,这样可以避免很多由于版本不一致导致的错误。
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第2张图片
本次调试过程中TensorFlow = 1.14.0 ,Python=3.7,按照视频里调试代码(视频课程中使用的是Eclipse),但是会遇到如下错误:
absl.flags._exceptions.IllegalFlagValueError: flag --do_train=true: (‘Non-boolean argument to boolean flag’, ‘true\’)
如何在修改pycharm里的初始化参数呢?具体方法如下:
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第3张图片
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第4张图片
(1) 参数设置为: ,–task_name=MRPC
–do_train=true
–do_eval=true
–data_dir=…/GLUE/glue_data/MRPC
–vocab_file=…/GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/vocab.txt
–bert_config_file=…/GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/bert_config.json
–init_checkpoint=…/GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/bert_model.ckpt
–max_seq_length=128
–train_batch_size=2
–learning_rate=2e-5
–num_train_epochs=3.0
–output_dir=…/GLUE/output/;

需要注意的是取消官网脚本文件的斜杠,如果下载官网代码困难,可以移步至我的仓库https://gitee.com/cheng_jinpei/bert,具体的几个文件的路径自己修改。(同时还需要注意的是参数的中英文字符,尤其是这个"-"符号,最好自己检查一下。否则可能会报错:raise _exceptions.IllegalFlagValueError(’%s: %s’ % (message, str(e)))
absl.flags._exceptions.IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None
.)

(2)最终实现效果如下:谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第5张图片
3.可能遇到的问题及解决方法
首先非常感谢大家的分享,这里我将可能遇到的问题做一下汇总:

(1)问题1:Windows fatal exception: access violation

中间省略…

Process finished with exit code -1073741819 (0xC0000005)谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第6张图片百度里给的解释是 windows致命异常:访问冲突 .
我个人觉得可能是电脑属性设置导致的,可以参考: 链接.
,但是在和网友交流的过程中试了试下面的步骤(实测可以解决)
解决方法:降低tensorflow的版本 和 使用GPU
a.降低Tensorflow的版本
我觉得大家可以重新新建一个tensorflow1.x的环境,然后在pycharm中重新更改一下编译环境即可。毕竟现在好多模型还是使用1.x的版本,具体方法如下:谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第7张图片
【注意】需要将图片中的第三步改成pip install tensorflow==1.11.0(因为要选择合适的版本),同时python的版本也需要和自己的对应上
b.使用GPU
根据之前网友的反馈,大多数都是使用CPU训练的,按理说CPU是可以训练BERT模型的,只需要将Batch_size调小,迭代的步数调大即可。报错的原因就是电脑属性导致的。在我们不清楚自己是否使用GPU版本的tensorflow时,可以使用如下代码进行测试:

//测试环境中GPU是否可用
import tensorflow as tf
if __name__ == "__main__":
    print(tf.test.is_gpu_available())

同时还要保证自己的CUDA Toolkit 和 cuDNN 与 Tensorflow的版本对应上。官方版本说明.
测试cuda是否可以使用,需要在命令行下执行下列指令:
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第8张图片
c.确认上述环境及cuda等好使之后,直接pycharm配置一下新的环境即可
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第9张图片
在这里插入图片描述
选择Add即可,然后选择刚才新建的tensorflow1.x的环境
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第10张图片
(2)问题2:–data_dir must have a value other than None
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第11张图片
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第12张图片

数据的路径不对,一般建议数据和代码放在同一个位置,个人建议使用绝对路径,这样不会出错。
(3)问题3: has no attribute ‘xxx’
在这里插入图片描述
这类问题的解决思路无非就是导入相应的包即可,其实我们遇到这类问题绝大多数原因是Tensorflow 2.x的版本删除了1.x版本里的某些属性,只需要更改一下版本即可,当然也可以使用兼容包tf.compat.v1。
(4)问题4:中英文符号的问题
raise _exceptions.IllegalFlagValueError(’%s: %s’ % (message, str(e)))
absl.flags._exceptions.IllegalFlagValueError: flag --data_dir=None: Flag --data_dir must have a value other than None.

这种情况检查一下路径那块的英文字符,报错的原因是路径那块软件没正确读入
(5)同文档下的自建库文件下面有波浪号 ,此时会报错: No module named “XXX”
谷歌BERT模型--调试MRPC任务--使用pycharm集成环境_第13张图片
解决方法可以参考我的另一篇博客: Tensorflow2.0使用心得.如果这个工程文件里没有__init__文件,自己新建一个,然后source root设置源文件即可,如果已经存在,直接source root。

你可能感兴趣的:(项目实战,自然语言处理,tensorflow)