运行谷歌开源BERT程序时遇到的bug修改记录

运行谷歌开源BERT程序时遇到的bug修改记录

一、没有对应的模块

采用anaconda的python3.8做为解释器,其实以及包含基本的第三方库了,但是在运行run_classifier.py文件时,仍然报错has no attribute XXX
解决方式:

# import tensorflow as tf
import tensorflow.compat.v1 as tf

二、传入参数错误

在将谷歌开源的github当中提示的参数配置到Edit Configuration当中的Parameters时,例如

  --task_name=MRPC \
  --do_train=true \
  --do_eval=true \
  --data_dir=$GLUE_DIR/MRPC \
  --vocab_file=$BERT_BASE_DIR/vocab.txt \
  --bert_config_file=$BERT_BASE_DIR/bert_config.json \
  --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
  --max_seq_length=128 \
  --train_batch_size=32 \
  --learning_rate=2e-5 \
  --num_train_epochs=3.0 \
  --output_dir=/tmp/mrpc_output/

提示:Non-boolean argument to boolean flag', 'true\\
解决方式: 去除掉 \
运行谷歌开源BERT程序时遇到的bug修改记录_第1张图片

--task_name=MRPC # 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=6 # 调小
--learning_rate=2e-5 # 学习率
--num_train_epochs=3.0 # 学习用1-3
--output_dir=../GLUE/output # 保存训练模型的位置

三、提示‘utf-8’编码错误

在这里插入图片描述
将第二步的配置修改好后,就不会报错了。第二步的配置一定不能复制官网原文,要结合自身的文件结构修改。

四、提示没有contrib

提示:module 'tensorflow.compat.v1' has no attribute 'contrib'

我们都知道这是因为tensorflow版本的问题,所以最好的解决方法是去tensorflow的官网去查看对应的函数改版前后的变化。
tensorflow官网
https://tensorflow.google.cn/guide/migrate/tpu_estimator
运行谷歌开源BERT程序时遇到的bug修改记录_第2张图片
在官网中给的案例看来,
原本的tf.contrib.tpu已经转变成tf.estimator.tpu
原本的tf.contrib.data已经转变为tf.data.experimental.map_and_batch
原本的tf.contrib.layers.layer_norm已经转变为tf.keras.layers.LayerNormalization()
但此时发现一件裂开的事,tf.contrib.layers.layer_norm方法和tf.keras.layers.LayerNormalization()方法当中的参数完全不一样,不进行简单的替换。

综合考虑之后,决定卸载原来的tensorflow,降至低版本

卸载

pip uninstall tensorflow

运行谷歌开源BERT程序时遇到的bug修改记录_第3张图片
重新下载低版本的tensorflow
https://github.com/tensorflow/tensorflow/tags?after=v2.2.0-rc0
运行谷歌开源BERT程序时遇到的bug修改记录_第4张图片
运行谷歌开源BERT程序时遇到的bug修改记录_第5张图片
此时又发现一件裂开的事:tensorflow1.X的版本最高只支持Python3.7,因此我需要装Python3.7。。。

经过一顿操作,最终选择了1.15.0版本的tensorflow。

pip install D:\Anaconda\conda3.7\Scripts\tensorflow-1.15.3-cp37-cp37m-win_amd64.whl

运行谷歌开源BERT程序时遇到的bug修改记录_第6张图片
将Pycharm中的解释器进行更换。
运行谷歌开源BERT程序时遇到的bug修改记录_第7张图片
终于可以运行了!!!
运行谷歌开源BERT程序时遇到的bug修改记录_第8张图片
CPU已经跑满了
运行谷歌开源BERT程序时遇到的bug修改记录_第9张图片

你可能感兴趣的:(笔记,自然语言处理NLP,源程序,开源,bert,bug)