【NLP高频面题】LSTM的前向计算如何进行加速?

devtools/2025/1/24 13:40:28/

【NLP高频面题】LSTM的前向计算如何进行加速?

重要性:★★★

核心思想:将小矩阵合并成大矩阵再进行梯度分块(Reduce → Map)。

  1. 合并计算遗忘门、输入门、输出门和新增信息的仿射变换,使用“大矩阵”加速运算
  2. 通过slice 节点将矩阵分成了 4 份,因此它的反向传播需要整合 4 个梯度

现在我们先来整理一下 LSTM 中进行的计算,如下所示:

这里需要注意式中的 4 个仿射变换。这里的仿射变换是指 x W x + h W h + b xW_x + hW_h + b xWx+hWh+b 这样的式子。4 个仿射变换,其实可以整合为通过 1 个式子进行,如下图所示。

整合4个权重,通过1次仿射变换进行4个计算:

如此,原本单独执行 4 次的仿射变换通过 1 次计算即可完成,可以加快计算速度。这是因为矩阵库计算“大矩阵”时通常会更快。

整合4个权重进行仿射变换的LSTM的计算图:

仿射变换的形状的改变:

批大小是 N,输入数据的维数是 D,记忆单元和隐藏状态的维数都是 H。另外,计算结果 A 中保存了 4 个仿射变换的结果。因此,通过 A[:, :H]、A[:, H:2H] 这样的切片取出数据,并分配给之后的运算节点。

slice节点的正向传播(上)和反向传播(下):


http://www.ppmy.cn/devtools/153143.html

相关文章

【BQ3568HM开发板】如何在OpenHarmony上通过校园网的上网认证

引言 前面已经对BQ3568HM开发板进行了初步测试,后面我要实现MQTT的工作,但是遇到一个问题,就是开发板无法通过校园网的认证操作。未认证的话会,学校使用的深澜软件系统会屏蔽所有除了认证用的流量。好在我们学校使用的认证系统和…

STM32补充——FLASH

目录 1.内部FLASH构成(F1) 2.FLASH读写过程(F1) 2.1内存的读取 2.2闪存的写入 2.3FLASH接口寄存器(写入 & 擦除相关) 3.FLASH相关HAL库函数简介(F1/F4/F7/H7) 4.编程实战 …

云岚到家项目100问 v1.0

云岚到家项目100问 v1.0 第一章 运营基础管理 你的项目是做什么业务的? 家政服务,我的项目是一个家政o2o平台。 项目涉及哪些角色? 本项目涉及如下角色: 家政需求方:通过用户端小程序完成在线预约下单、支付、评价、…

HTML中的`<!DOCTYPE html>`是什么意思?

诸神缄默不语-个人CSDN博文目录 在学习HTML时&#xff0c;我们经常会看到HTML文档的开头出现<!DOCTYPE html>&#xff0c;它是HTML文件的第一行。很多初学者可能会疑惑&#xff0c;为什么需要这行代码&#xff1f;它到底有什么作用呢&#xff1f;在这篇文章中&#xff0…

冲刺蓝桥杯之速通vector!!!!!

文章目录 知识点创建增删查改 习题1习题2习题3习题4&#xff1a;习题5&#xff1a; 知识点 C的STL提供已经封装好的容器vector&#xff0c;也可叫做可变长的数组&#xff0c;vector底层就是自动扩容的顺序表&#xff0c;其中的增删查改已经封装好 创建 const int N30; vecto…

Julia语言的安全开发

Julia语言的安全开发 引言 在现代软件开发中&#xff0c;安全性是一个不可忽视的重要因素。无论是应用程序的设计、开发还是部署阶段&#xff0c;安全性都应当贯穿整个软件生命周期。近年来&#xff0c;Julia语言逐渐流行&#xff0c;因其高性能和易用性被广泛应用于科学计算…

c# 设置Regex Multiline无效问题

设置RegexOptions.Multiline后正则中$可匹配每一行的结束符,但因为windows系统使用\r\n作为结束符,而 Multiline 是能匹配\n,所以就会导致c#或者说windows开发下会导致Multiline失效. 所以在写的时候把 $ 写成 \r?$ 就可以了. 正则表达式的选项 - .NET | Microsoft Learn 默…

【25考研】也很难!清华大学计算机考研复试难度分析!

一、复试内容 复试考核注意事项&#xff1a; 1、笔试环节&#xff1a;笔试部分包括英语和专业课的考查。其中英语笔试部分把包括英语听力和口语测试&#xff1b;关于专业课考试&#xff0c;有的学校规定了考试范围&#xff0c;考生可以在初试结束后尽快开始复习&#xff1b;对…