前言

简单介绍门控线性单元的结构。

原始论文

《Language Modeling with Gated Convolutional Networks》 提出GLU,2017年(第一版是2016年)

网络结构

下图的结构只是其中一层,可以堆叠。

计算公式

每一层的计算公式如下。

其中:
X代表输入。
W、V、b、c都是要学习的参数。
σ\sigmaσ在原论文中是sigmoid函数。
⊗是对应元素相乘(element-wise product),也称为哈达玛积(Hadamard product)。

从公式可以看到,输入X分两路,其中一路的运算结果不做处理,另一路则经过激活函数。

Pytorch文档

torch.nn.GLU(dim=-1)GLU(a,b)=a⊗σ(b)  (先随便读一下文档,后面有代码示例和详细解释)参数
dim (int) – the dimension on which to split the input. Default: -1
指定从哪个维度对input进行拆分,默认值:-1参数形状
Input: (∗1,N,∗2) where * means, any number of additional dimensions
Output: (∗1,M,∗2) where M=N/2

需要说明,如果用pytorch的GLU模型计算原论文中GLU层,需要自己构造a和b两个部分。

代码示例

理解参数dim的作用

1. 不设置dim,使用默认值-1。


>>> m = nn.GLU()  # dim默认是-1
>>> input = torch.randn(4, 2)
>>> input
tensor([[ 0.4562,  0.7670],[ 1.7934,  0.7769],[-0.3021, -0.1275],[-1.4728,  0.7495]])
>>> output = m(input)
>>> output
tensor([[ 0.3115],[ 1.2285],[-0.1414],[-1.0001]])

解释:dim=-1,意味着最后一个维度,对于二维矩阵,也就是列的维度,所以是按列拆分。

2. 设置dim=0。

>>> input = torch.randn(4, 3)
>>> m = nn.GLU(dim=0)    # dim=0
>>> output = m(input)
>>> output
tensor([[-0.9414, -0.0830, -0.5450],[-0.1251, -1.1556,  0.6469]])

解释:dim=0,意味着第一个维度,对于二维矩阵,就是行的维度,所以是按行拆分。

根据上面介绍的原理,应该知道,被拆分的那个维度,向量个数必须是偶数,才能平均拆分。如果对一个4*3的矩阵按列拆分,就会报错了。

GLU(Gated Linear Unit,门控线性单元)简介相关推荐

  1. 门控循环单元-GRU单元(Gated Recurrent Unit)

    来源:Coursera吴恩达深度学习课程 接下来我们将会学习门控循环单元(Gated Recurrent Unit),它改变了RNN的隐藏层,使其可以更好地捕捉深层连接,并改善了梯度消失问题,让我们看 ...

  2. pytorch学习笔记(三十一):门控循环单元(GRU)

    文章目录 前言 1. 门控循环单元 1.1 重置门和更新门 1.2 候选隐藏状态 1.3 隐藏状态 2. 读取数据集 3. 从零开始实现 3.1 初始化模型参数 3.2 定义模型 3.3 训练模型并创 ...

  3. 2020-10-21 吴恩达DL学习-C5 序列模型-W1 循环序列模型(1.9 GRU门控循环单元-改善梯度消失-在序列中学习非常深的连接-简化和完整版本-记忆细胞)

    1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c 2.详细笔记网站(中文):http://www.ai-sta ...

  4. 【吴恩达deeplearning.ai】Course 5 - 1.9 GRU 单元(门控循环单元)

    GRU 单元 (Gated Recurrent Unit (GRU)) 你已经了解了基础的RNN模型的运行机制,在本节视频中你将会学习门控循环单元,它改变了RNN的隐藏层,使其可以更好地捕捉深层连接, ...

  5. (pytorch-深度学习)门控循环单元(GRU)

    门控循环单元(GRU) 循环神经网络中的梯度计算 当时间步数较大或者时间步较小时,循环神经网络的梯度较容易出现衰减或爆炸. 虽然裁剪梯度可以应对梯度爆炸,但无法解决梯度衰减的问题. 通常由于这个原因, ...

  6. 花书+吴恩达深度学习(十七)序列模型之长短期记忆 LSTM 和门控循环单元 GRU

    目录 0. 前言 1. 长短期记忆 LSTM 2. 门控循环单元 GRU 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十五)序列模型之循环神经网络 ...

  7. 动手学深度学习(三十九)——门控循环单元GRU

    文章目录 门控循环单元(GRU) 一.门控隐藏状态 1.1 重置门和更新门 1.2候选隐藏状态 1.3 隐藏状态 二.从零实现GRU 2.1 初始化模型参数 2.2 定义模型 2.3 训练与预测 2. ...

  8. 门控循环单元网络(GRU)在自然语言处理中的应用

    作者:禅与计算机程序设计艺术 1.简介 自然语言处理(NLP)是人类认知的一项重要技能,它涉及到对文本数据进行处理.提取信息并对其做出回应.传统上,文本分析方法使用基于统计模式的算法,如TF-IDF. ...

  9. 面向中国企业关系抽取的双向门控递归单元神经网络

    面向中国企业关系抽取的双向门控递归单元神经网络 论文原文:论文原文 摘要:为了帮助金融从业人员有效识别高风险企业.法人或股东,国内外学者构建了风险预警的企业知识图谱.从财经新闻等非结构化数据中提取企业 ...

最新文章

  1. docker 容器数据备份
  2. Spring Security 和 Shiro 该如何选择?
  3. IdentityServer4 接口说明
  4. Spark Streaming揭秘 Day16 数据清理机制
  5. 什么是Dropthings
  6. arcgis里面怎么截图_ArcGIS在变更调查中影像截图批量制作的统一方法
  7. 一款超强可视化报表工具:RDP报表工具
  8. Ubuntu录制gif图
  9. 微信小程序开发前后端交互快速入门
  10. 消息队列——MQ(Message Queue)
  11. Android 实现点击输入框以外的区域隐藏软键盘
  12. uv视差检测障碍物_社区组成–视差效果,节拍检测,精美游戏和艺术研究
  13. glob.glob()
  14. 苹果手机解压缩软件_360压缩大师360 推出的免费 macOS 解压缩软件
  15. mybatis的parameterType可以不写(我一般都不写)
  16. Python【每日一问】23
  17. 在python中一个复数的虚部用i表示_以3为实部4为虚部,Python复数的表达形式为___________或________。_学小易找答案...
  18. ip地址测试软件,服务器ip链接测试软件
  19. Win7提速如何进行磁盘清理和碎片整理
  20. 华为手机不激活怎么验机_华为手机好用吗 实体店买手机怎么验机

热门文章

  1. 如何判断一个String字符串不为空或这不为空字符串
  2. 为VsCode配置C++环境
  3. TMF、NGOSS介绍
  4. Revit二次开发之CAD线的翻模--梁的翻模
  5. 2023中国程序员薪酬报告出炉,你拖后腿了吗?
  6. centos7自动获取ip命令_突然断网?专业分析宽带拨号和自动获取ip哪个好?
  7. 运放-1-理想运放与虚断虚短的来源
  8. HTML数字化教学资源平台,网页设计与制作教学课件作者HTML+CSS+JavaScript张洪斌教学资源数字化教学资源平台网站布局课件.doc...
  9. PostgreSQL报表统计历史12月度数据,无数据补零
  10. Vena Network CEO朱清:寒冬中的守夜人