bert4keras是一个基于keras的预训练模型加载框架,目前支持多种预训练模型(BERT、ALBERT、RoBERTa、ALBERT、NEZHA、GPT2、T5等),并支持多种环境(python 2.7、python 3.x)和后端(keras、tf.keras、tf 1.x、tf 2.x)。
keras-bert依赖于keras-transformer,而keras-transformer依赖于keras-multi-head,keras-multi-head依赖于keras-self-attention
第一部分是tokenizer的建立,bert4keras.tokenizers里边包含了对原版BERT的tokenizer的完整复现,同时还补充了一下常用的功能,简单来说就是利用分词器进行分词,得到位置索引
第二部分就是BERT模型的建立,其主要函数是build_transformer_model,加载模型结构以及权重,将分词后的结果映射到高维,得到词向量。
def build_transformer_model(
config_path=None, # 模型的配置文件(对应的文件为json格式)
checkpoint_path=None, # 模型的预训练权重(tensorflow的ckpt格式)
model='bert', # 模型的类型(bert、albert、albert_unshared、nezha、electra、gpt2_ml、t5)
application='encoder', # 模型的用途(encoder、lm、unilm)
return_keras_model=True, # 返回Keras模型,还是返回bert4keras的模型类
**kwargs # 其他传递参数
):