Transformer的每个Encoder子层(bert_base中包含12个encoder子层)包含 2 个小子层 :

  • Multi-Head Attention
  • Feed Forward

(Decoder中还包含Masked Multi-Head Attention)

class 有如下几个:

PrePostProcessLayer 用于添加残差连接、正则化、dropout
PositionwiseFeedForwardLayer 全连接前馈神经网络
MultiHeadAttentionLayer 多头注意力层
EncoderSubLayer encoder子层
EncoderLayer transformer encoder层

release 1.7 models/dygraph/bert/model/transformer_encoder.py

class PrePostProcessLayer(Layer):"""PrePostProcessLayer"""def __init__(self, process_cmd, d_model, dropout_rate, name):super(PrePostProcessLayer, self).__init__()self.process_cmd = process_cmdself.functors = []self.exec_order = ""for cmd in self.process_cmd:if cmd == "a":  # add residual connectionself.functors.append(lambda x, y: x + y if y else x)self.exec_order += "a"elif cmd == "n":  # add layer normalizationself.functors.append(self.add_sublayer("layer_norm_%d" % len(self.sublayers(include_sublayers=False)),LayerNorm(normalized_shape=d_model,param_attr=fluid.ParamAttr(name=name + "_layer_norm_scale",initializer=fluid.initializer.Constant(1.)),bias_attr=fluid.ParamAttr(name=name + "_layer_norm_bias",initializer=fluid.initializer.Constant(0.)))))self.exec_order += "n"elif cmd == "d":  # add dropoutif dropout_rate:self.functors.append(lambda x: fluid.layers.dropout(x, dropout_prob=dropout_rate, is_test=False))self.exec_order += "d"def forward(self, x, residual=None):for i, cmd in enumerate(self.exec_order):if cmd == "a":x = self.functors[i](x, residual)else:x = self.functors[i](x)return x

PaddlePaddle Transformer encoder 源码解析 v1.7相关推荐

  1. 【DETR源码解析】三、Transformer模块

    目录 前言 一.Transformer整体结构 二.TransformerEncoder 2.1.TransformerEncoderLayer 三.TransformerDecoder 3.1.Tr ...

  2. 谷歌BERT预训练源码解析(二):模型构建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...

  3. Java String源码解析

    String类概要 所有的字符串字面量都属于String类,String对象创建后不可改变,因此可以缓存共享,StringBuilder,StringBuffer是可变的实现 String类提供了操作 ...

  4. [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行

    [源码解析] 模型并行分布式训练 Megatron (4) - 如何设置各种并行 文章目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x0 ...

  5. SpringBoot入门-源码解析(雷神)

    一.Spring Boot入门 视频学习资料(雷神): https://www.bilibili.com/video/BV19K4y1L7MT?p=1 github: https://github.c ...

  6. 《Attention is all you need》源码解析+算法详解

    Attention is all you need 源码解析 最近学习Transformer模型的时候,并且好好读了一下Google的<Attention is all you need> ...

  7. [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

    [源码解析] 模型并行分布式训练Megatron (2) - 整体架构 文章目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...

  8. [源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算

    [源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算 文章目录 [源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算 0x1. ...

  9. 谷歌BERT预训练源码解析(三):训练过程

    目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程,BERT模型训练过程是在自己的TPU上进行的,这部分我没做过研究所以不做深入探讨.BE ...

  10. 谷歌BERT预训练源码解析(一):训练数据生成

    目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...

最新文章

  1. Keypress - 捕获键盘输入的JavaScript库
  2. Java基础笔记 – 枚举类型的使用介绍和静态导入
  3. 实例7:python
  4. (99)Verilog HDL:呼吸灯设计
  5. echo 单引号和双引号
  6. rust显卡要求 steam_Steam夏促游戏销量排行,Epic称暂时不要买地平线黎明时分,虚幻5引擎配置要求不高,热血无赖电影开拍,Steam夏促育碧专区...
  7. [Linux] 常用Linux命令
  8. Cas单点登录常见问题总结
  9. novatel计算odom--GPS坐标与UTM坐标转换
  10. php query参数解析,php http_build_query()函数实例讲解
  11. 一款好用的bi报表软件,让你站在Excel的肩膀上
  12. 360wifi: 手机锁屏360wifi掉线的解决方法
  13. linux 系统中/etc/fstab 文件各字段功能,Linux系统 /etc/fstab各个字段含义解释
  14. android 触摸事件 取消,如何禁用/重新启用Android中的触摸事件?
  15. python之网络部分
  16. 字节跳动一道Python面试题
  17. 数学计算机关系论文2000字,数学与计算机科学论文2000字_数学与计算机科学毕业论文模板...
  18. form表单中id与name的区别
  19. Single Image Haze Removal Using Dark Channel Prior
  20. linux红外键盘映射表,使用linux的dumkeys命令显示键盘映射表

热门文章

  1. WPF-创建超链接文本
  2. C#读写日志文本文件
  3. Innodb 的事物隔离级别实现原理(一)
  4. linux 文件查找
  5. We7CMS内容管理系统助阵政府完善信息公开制度
  6. 连接 mysql 数据库失败频繁的原因探秘
  7. 营销工作的七项核心能力
  8. gettype php,gettype
  9. react实现聊天界面_React-Redux 100行代码简易版探究原理
  10. OpenCV-图像处理(31、图像矩(Image Moments))