Bert源码阅读系列
1. Bert源码(一) run_classifier.py
2. Bert源码(二)modeling.py
Bert源码(一)run_classifier.py
run_classifier.py是Bert模型在句子分类、句子对推理等任务上微调的脚本,所以想要把bert用于下游的部分任务,这个文件的代码必须要完全弄懂。
参数设置
开始部分通过tf.flags.FLAGS来设置参数,分为必选参数和可选参数。
必选参数
data_dir
数据集所在目录bert_config_file
bert预训练模型的config文件,以json文件形式储存task_name
任务名称,默认带了’cola’, ‘mnli’, ‘mrpc’, 'xnli’四个任务vocab_file
预训练模型的vocab.txt文件output_dir
微调过后模型保存的目录
可选参数
init_checkpoint
保存的bert预训练模型do_lower_case
是否将输入文本转为小写,如果是uncased bert模型就设置为true,否则设置为false,默认为truemax_seq_length
经过WordPiece切词后的最长输入长度,序列过长将被切割,序列过短将被填充。最大长度不能超过bert预训练模型中的max_position_embeddingsdo_train
是否在train上训练do_eval
是否在dev上测试do_predict
是否在test上进行预测结果train_batch_size
eval_batch_size
predict_batch_size
learning_rate
num_train_epochs
默认为3warmup_proportion
默认为0.1save_checkpoints_steps
默认1000步保存一次模型iterations_per_loop
use_tpu
tpu_name
tpu_zone
gcp_project
master
num_tpu_cores
数据类
1. InputExample类
InputExample
类充当的是数据样例结构体,里面包含四个成员变量
guid
每个样例的唯一idtext_a
第一个句子text_b
第二句子,可为空label
标签
2. PaddingInputExample类
PaddingInputExample
类里面啥也没有,算是一个空的InputExample
3. InputFeatures类
InputFeatures
类是将InputExample实例向量化后的结果,里面有五个成员变量
input_ids
每个token的idinput_mask
每个token是否被mask,取值范围是0或者1segment_ids
0表示第一个句子,1表示第二个句子label_id
labelis_real_example
好像是