Bert
bo.qiu_xbw
Talking is cheap ,show me the code.
展开
-
bert保存模型(输入不能分开IteratorV2)
今天下载google官方bert代码,发现使用estimator训练成ckpt格式,转成pb以后,发现输入融合到了一起。使用pb推理的时候,用see.run出现错误。inputs = graph.get_tensor_by_name(prex + "IteratorV2:0")# input_mask = graph.get_tensor_by_name(prex + "input_mask:0")# token_type_ids = graph.get_tensor_by_name(prex +原创 2021-12-24 17:20:31 · 815 阅读 · 0 评论 -
BERT encoder-attention计算逻辑
encoder中最重要的莫过于attention的计算了,本章对照代码讲解一下计算逻辑,主要是python改成c++时候要注意一些shape,并且减少tanspose的使用,使用Intel mkl中的矩阵计算API,例如cblas,cblas_batch等等。1.qkv合并------>Dense(input * qkv_weight + qkv_bias)------->split分开分开后q=k=v shape为(batch_size, seq_len, number_of_head,原创 2021-09-29 13:55:40 · 564 阅读 · 0 评论 -
pytorch加载bert权重与转换成onnx
由于bert是google创造的模型,所以大部分都是用tensorflow编写。自从有了transformer库,pytorch版本的模型加载也简单了许多。权重文件,如图所示:config.json是bert的配置,包括hidden_size,drop此类超参,如下所示:{ "attention_probs_dropout_prob": 0.1, "directionality": "bidi", "hidden_act": "gelu", "hidden_dropout_pr原创 2021-09-28 15:54:55 · 3106 阅读 · 10 评论 -
BERT embeddings计算逻辑
1.获得输入中文对应的词库的id。重要的是这句话output = tf.gather(embedding_table, flat_input_ids)def embedding_lookup(input_ids, vocab_size, embedding_size=128, initializer_range=0.02, word_em原创 2021-09-17 16:16:36 · 528 阅读 · 0 评论