| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> PaddleDetection代码解析之Transformer encoder源码实现分析(上) -> 正文阅读 |
|
[人工智能]PaddleDetection代码解析之Transformer encoder源码实现分析(上) |
2021SC@SDUSC 经过阅读paddle的源码,我理解了动态图下的Transformer encoder源码实现,由于这个实现比较复杂,因此我将通过两个博客来对Transformer encoder的源码实现进行说明。 Transformer的每个Encoder子层(bert_base中包含12个encoder子层)包含 2 个小子层 :
(Decoder中还包含Masked Multi-Head Attention) ? class 有如下几个:
在动态图中,网络层的实现继承paddle.fluid.dygraph.Layer,类内方法__init__是对网络层的定义,forward是跑前向时所需的计算。
一些必要的导入
PrePostProcessLayer可选模式:{ a: 残差连接,n: 层归一化,d: dropout} 残差连接图中 残差连接公式: y=f(x)+x x 表示输入的变量,实际就是跨层相加。 层归一化LayerNorm实际就是对隐含层做层归一化,即对某一层的所有神经元的输入进行归一化(沿着通道channel方向),使得其加快训练速度: ? 层归一化公式: ? x?: 该层神经元的向量表示 H?: 层中隐藏神经元个数 ??: 添加较小的值到方差中以防止除零 g?: 可训练的比例参数 b?: 可训练的偏差参数 dropout丢弃或者保持x的每个元素独立。Dropout是一种正则化手段,通过在训练过程中阻止神经元节点间的相关性来减少过拟合。根据给定的丢弃概率,dropout操作符按丢弃概率随机将一些神经元输出设置为0,其他的仍保持不变。 dropout op可以从Program中删除,提高执行效率。
PositionwiseFeedForwardLayerbert中hidden_act(激活函数)是gelu。 ?
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 23:15:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |