Bert瞎玩系列——bert的模型部分

  • 其实就是transformer。。。。个人前面有文章写过了transformer了,所以这里就看一下细节。
  • 详篇大论太多了,而且和transorfmer是重的,所以就写个轻量级的把。

create_model

  • 这个是纯粹的模型结构搭建部分(这里搭建好的结构,其中可训练的变量可以用pre-train好的直接赋值操作)。
# 建立bert模型
model = modeling.BertModel(
        config=bert_config, is_training=is_training,
        input_ids=input_ids, input_mask=input_mask,
        token_type_ids=segment_ids, use_one_hot_embeddings=False)
        
# Gets final hidden layer of encoder
# 就是得到整个句子的embedding
embedding_layer = model.get_sequence_output()

# 对应标志位(第一个)的隐藏层输出,用于分类,类似于下图:
output_layer = model.get_pooled_output()

  • 红色箭头为其output部分,此图就是举例子,并不切合本文的模型。
    Bert瞎玩系列——bert的模型部分_第1张图片

  • 最后在ouput后面接一个全连接层用于分类就OK了。

  • 剩下的无非就是优化方法,损失那些。

  • 至于bert基本模型的建立,就是transformer的encode建立过程,去看transformer更好,没必要被bert迷惑,这里就不详细讲了。

END

  • 所以,对于分类问题:
    1. Bert做特征提取器,提取特征。
    1. 再接一个分类器(简单的即可,这样可以体现出,我分类的结果好,全是bert的功劳)

你可能感兴趣的:(tensorflow,deeplearning,NLP)