项目场景:
环境:win10+pycharm社区版+anaconda3,配置bert环境,tensorflow1.14/1.13
在做情感分析项目时,要用到bert,在用anaconda prompt配置好bert虚拟环境后,出现了大量bug。
使用的安装命令:
conda create -n bert python=3.7
conda activate bert
conda install tensorflow==1.14
conda deactivate
问题描述及解决
主要出现了三个bug:
1.numpy包版本过高;
解决方法:
conda uninstall numpy
conda install numpy==1.16.4
2.配置编译参数错误;
报错:flag --task_name=None: Flag --task_name must have a value other than None.
报错原因:
#这是配置运行参数时parameters项内容,这样写会报错
--task_name=MRPC \
--do_train=true \
--do_eval=true \
--data_dir=../glue/glue_data/MRPC \
--vocab_file=../glue/BERT_MODEL_DIR/uncased_L-12_H-768_A-12/vocab.txt \
--bert_config_file=../glue/BERT_MODEL_DIR/uncased_L-12_H-768_A-12/bert_config.json \
--init_checkpoint=../glue/BERT_MODEL_DIR/uncased_L-12_H-768_A-12/bert_model.ckpt \
--max_seq_length=128 \
--train_batch_size=8 \
--learning_rate=2e-5 \
--num_train_epochs=1.0 \
--output_dir=../glue/outputs
解决方法:参数改成下方代码
--task_name=MRPC
--do_train=true
--do_eval=true
--data_dir=../glue/glue_data/MRPC
--vocab_file=../glue/BERT_MODEL_DIR/uncased_L-12_H-768_A-12/vocab.txt
--bert_config_file=../glue/BERT_MODEL_DIR/uncased_L-12_H-768_A-12/bert_config.json
--init_checkpoint=../glue/BERT_MODEL_DIR/uncased_L-12_H-768_A-12/bert_model.ckpt
--max_seq_length=128
--train_batch_size=8
--learning_rate=2e-5
--num_train_epochs=1.0
--output_dir=../glue/outputs
3.tensorflow1.14版本太高。
报错:tensorflow:
The name tf.app.run is deprecated. Please use tf.compat.v1.app.run instead.
The name tf.logging.set_verbosity is deprecated. Please use tf.compat.v1.logging.set_verbosity instead.
报错原因:
如果是tensorflow1.14,是版本太高的原因。可以选择修改导入包模块,也可以重新配置一个tensorflow1.13的虚拟环境,
解决方法1:
将程序 run_classifier.py
和 optimization.py
中导入模块部分修改:
# import tensorflow as tf
#注释掉这2句,改为下面1句
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
重新执行程序即可。
解决方法2:
重新配置一个虚拟环境bert2,安装低版本tensorflow1.13。
#进入anaconda prompt
conda create -n bert python=3.7
conda activate bert
conda install tensorflow==1.13.1
conda deactivate
再从anaconda3中打开pycharm,将bert2虚拟环境导入到pycharm中即可。
注意:tensorflow1.13版本要用
import tensorflow as tf