PaddlePaddle Transformer encoder 源码解析 v1.7
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相关推荐
- 【DETR源码解析】三、Transformer模块
目录 前言 一.Transformer整体结构 二.TransformerEncoder 2.1.TransformerEncoderLayer 三.TransformerDecoder 3.1.Tr ...
- 谷歌BERT预训练源码解析(二):模型构建
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...
- Java String源码解析
String类概要 所有的字符串字面量都属于String类,String对象创建后不可改变,因此可以缓存共享,StringBuilder,StringBuffer是可变的实现 String类提供了操作 ...
- [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行
[源码解析] 模型并行分布式训练 Megatron (4) - 如何设置各种并行 文章目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x0 ...
- SpringBoot入门-源码解析(雷神)
一.Spring Boot入门 视频学习资料(雷神): https://www.bilibili.com/video/BV19K4y1L7MT?p=1 github: https://github.c ...
- 《Attention is all you need》源码解析+算法详解
Attention is all you need 源码解析 最近学习Transformer模型的时候,并且好好读了一下Google的<Attention is all you need> ...
- [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
[源码解析] 模型并行分布式训练Megatron (2) - 整体架构 文章目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...
- [源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算
[源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算 文章目录 [源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算 0x1. ...
- 谷歌BERT预训练源码解析(三):训练过程
目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程,BERT模型训练过程是在自己的TPU上进行的,这部分我没做过研究所以不做深入探讨.BE ...
- 谷歌BERT预训练源码解析(一):训练数据生成
目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...
最新文章
- Keypress - 捕获键盘输入的JavaScript库
- Java基础笔记 – 枚举类型的使用介绍和静态导入
- 实例7:python
- (99)Verilog HDL:呼吸灯设计
- echo 单引号和双引号
- rust显卡要求 steam_Steam夏促游戏销量排行,Epic称暂时不要买地平线黎明时分,虚幻5引擎配置要求不高,热血无赖电影开拍,Steam夏促育碧专区...
- [Linux] 常用Linux命令
- Cas单点登录常见问题总结
- novatel计算odom--GPS坐标与UTM坐标转换
- php query参数解析,php http_build_query()函数实例讲解
- 一款好用的bi报表软件,让你站在Excel的肩膀上
- 360wifi: 手机锁屏360wifi掉线的解决方法
- linux 系统中/etc/fstab 文件各字段功能,Linux系统 /etc/fstab各个字段含义解释
- android 触摸事件 取消,如何禁用/重新启用Android中的触摸事件?
- python之网络部分
- 字节跳动一道Python面试题
- 数学计算机关系论文2000字,数学与计算机科学论文2000字_数学与计算机科学毕业论文模板...
- form表单中id与name的区别
- Single Image Haze Removal Using Dark Channel Prior
- linux红外键盘映射表,使用linux的dumkeys命令显示键盘映射表