如题,我们在参加一些比赛如:零基础入门NLP - 新闻文本分类的时候,由于比赛的数据集是脱敏的,所以如果需要使用预训练模型的时候,只能从头训练一个模型,而不能使用预训练模型,这里使用最新版的TensorFlow进行训练。代码在我的Github仓库:train_bert_from_egg_with_tensorflow
训练过程如下:
pip
注意:这里需要使用TensorFlow==2.5.0 需要以下依赖:
# tensorflow-gpu >= 2.5.0 # GPU version of TensorFlow.
tensorflow >= 2.5.0 # CPU Version of TensorFlow.
gin-config==0.1.1
tensorflow_hub
tensorflow_addons
step 0: create vocab.txt
python 0.make_vocab.py
这里会在bert-min文件夹中生成vocab.txt
step 1.构造10fold数据
将数据按类别分类,然后再平均分到10份中,这样没份中的各个类别就比较均衡
python 1.构造10fold数据.py
这里会在train_split_data中产生经过10fold的data
step 2: create pretraining data
注意,这里windows下需要一个一个修改文件运行,具体可以看2.create_pretraining_data.py
:main下的代码 linux 可以使用shell 脚本直接运行
python 2.create_pretraining_data.py
这里会在records/中产生10个tfrecords数据
step 3: run pretraining
首先需要在bert-mini中放置config.json来配置要训练的bert的参数
python 3.run_pretraining.py --input_files=./records/*.tfrecord --model_export_path=./checkpoint --bert_config_file=./bert-mini/config.json --train_batch_size=128 --max_seq_length=256 --max_predictions_per_seq=32 --learning_rate=1e-4
step 4: convert checkpoint
python 4.convert_checkpoint.py --tf_checkpoint checkpoint/bert_model.ckpt-8 --bert_config_file bert-mini/config.json --pytorch_dump_path bert-mini/pytorch_model.bin