transformer
- Transformer 中 Encoder 由 6 个相同的层组成,每个层包含 2 个部分:
- Multi-Head Self-Attention
- Position-Wise Feed-Forward Network
- Decoder 也是由 6 个相同的层组成,每个层包含 3 个部分:
- Multi-Head Self-Attention
- Multi-Head Context-Attention
- Position-Wise Feed-Forward Network
bert代码
transformer的左侧部分是由这样的6个encoder单元组成,现在把EncoderLayer堆叠起来。embedding-->pos_encoding-->dropout-->EncoderLayers
Encoder code
1 | class Encoder(tf.keras.layers.Layer): |
transformer的右侧部分是由这样的6个decoder单元组成,现在把DecoderLayer堆叠起来。与Encoder不同的是,Decoder返回的结果中,包含了用字典存储的每一层的attention_weights。embedding-->pos_encoding--> dropout-->DecoderLayers
Decoder code
1 | class Decoder(tf.keras.layers.Layer): |
搭建Transformer类,Encoder-->Decoder-->final_layerfinal_layer
是与vocab_size大小保持一致的全连接层。
Transformer code
1 | class Transformer(tf.keras.Model): |