pytorch学习——LSTM和GRU

news2025/7/19 4:33:45

参考书籍:https://zh-v2.d2l.ai/chapter_recurrent-modern/lstm.html

参考论文: https://colah.github.io/posts/2015-08-Understanding-LSTMs/

简介:

        LSTM(长短期记忆网络)和GRU(门控循环单元)是两种常用的改进型循环神经网络(RNN),用于解决传统RNN中的长期依赖性和梯度消失/梯度爆炸等问题。

        LSTM和GRU都通过引入门控机制和记忆单元来增强RNN的建模能力,并有效地捕捉长期依赖性。它们具有类似的结构,但在门控机制的设计和计算复杂度上有所不同。

一.LSTM长短期记忆网络(long short-term memory)

        LSTM(Long Short-Term Memory)是一种常用的循环神经网络(RNN)变体,旨在解决传统RNN在处理长期依赖性时容易出现的梯度消失或梯度爆炸问题。LSTM通过引入门控机制,有效地捕捉和记忆时间序列数据中的长期依赖关系。

 

 

 

        LSTM的核心思想是使用称为"门"的结构来控制信息的流动和记忆的更新。下面是LSTM的主要组成部分   

  1. 输入门(Input Gate):输入门决定哪些信息将被传递到细胞状态(Cell State)。它使用一个Sigmoid激活函数来控制输入的权重,以及一个tanh激活函数来处理输入的值。输入门的计算公式如下:
    i_t = sigmoid(W_i * x_t + U_i * h_(t-1) + b_i)
    ```
    ````
    g_t = tanh(W_g * x_t + U_g * h_(t-1) + b_g)
    ````
  2. 遗忘门(Forget Gate):遗忘门决定元状态中哪些信息应该被遗忘。它通过一个Sigmoid激活函数来控制元状态中的旧信息的权重。遗忘门的计算公式如下:

    f_t = sigmoid(W_f * x_t + U_f * h_(t-1) + b_f)
    
  3. 元状态更新(Cell State Update):元状态通过将输入门和遗忘门的结果相乘,并添加新的候选值(由tanh激活函数计算得到)来更新。元状态更新的计算公式如下:

    C_t = f_t * C_(t-1) + i_t * g_t
    
  4. 输出门(Output Gate):输出门决定从元状态中输出的值。它使用一个Sigmoid激活函数来控制输出的权重,并使用tanh激活函数处理元状态。输出门的计算公式如下:

    o_t = sigmoid(W_o * x_t + U_o * h_(t-1) + b_o)
    
    h_t = o_t * tanh(C_t)
    

        在上述公式中,x_t表示当前时间步骤的输入,h_(t-1)表示上一个时间步骤的隐藏状态,i_t、f_t、o_t分别表示输入门、遗忘门和输出门的输出,g_t表示候选值,C_t表示元状态,h_t表示当前时间步骤的隐藏状态。

        通过使用输入门、遗忘门和输出门,LSTM能够控制信息流动和记忆的更新,有效地捕捉和处理时间序列数据中的长期依赖关系。这使得LSTM在许多任务中表现出色,如语言模型、机器翻译、语音识别等。

二.GRU(Gate Recurrent Unit)门控循环单元

参考链接:人人都能看懂的GRU - 知乎

        GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。

GRU和LSTM在很多情况下实际表现上相差无几,那么为什么我们要使用新人GRU(2014年提出)而不是相对经受了更多考验的LSTM(1997提出)呢。

下图1-1引用论文中的一段话来说明GRU的优势所在。

      

简单译文:我们在我们的实验中选择GRU是因为它的实验效果与LSTM相似,但是更易于计算。

 

相比LSTM,使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率,因此很多时候会更倾向于使用GRU。

OK,那么为什么说GRU更容易进行训练呢,下面开始介绍一下GRU的内部结构。

2.1GRU的输入和输出结构

 

2.2GRU的内部结构

        

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/990215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue项目新增高德地图,poi查询,点标记

一. vue项目里面加入高德地图 JS API介绍 开发文档 二.成为开发者并创建 key 申请流程 三.项目准备 安装插件 npm i amap/amap-jsapi-loader --savevue项目引入初始化 实现代码&#xff1a; <template><div><div class"top-part"><!-- 输…

【猿灰灰赠书活动 - 04期】- 【分布式统一大数据虚拟文件系统——Alluxio原理、技术与实践】

&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;博文为大家争取福利&#xff0c;与机械工业出版社合作进行送书活动 &#x1f468;‍&#x1f…

07-Spring Cloud

1、如何设计一个注册中心&#xff1f; 高可用&#xff1a;通过集群的方式 高并发&#xff1a;减少响应时间、提高吞吐量 并发用户数等&#xff0c;通过增加服务器性能、 扩展服务实例的方式 高性能&#xff1a;程序处理速度 考虑 数据存储结构、通信机制、集群同步。 集群…

Fiddler 查看响应时间(超详细~)

Fiddler 查看响应时间 步骤1&#xff1a;打开Fiddler&#xff0c;找到FiddlerScript这个标签 步骤2&#xff1a;将下面的code加入到Script中 public static BindUIColumn("TimeTaken/ms", 120)function TimeTaken(oS: Session):String{var sResult "0";…

动态住宅代理能使用在哪些场景

一、什么是动态住宅代理ip 动态住宅代理是一种代理技术&#xff0c;它利用代理服务器中转用户和目标服务器之间的网络流量&#xff0c;实现用户真实位置的屏蔽。代理提供商会有自己的ip大池子&#xff0c;当你通过代理服务器向网站发送请求时&#xff0c;服务器会从池子中选中…

【漏洞库】Fastjson_1.2.24_rce

文章目录 漏洞描述漏洞编号漏洞评级影响版本漏洞复现- 利用工具- 漏洞环境- 漏洞扫描- 漏洞验证- 深度利用- GetShell- EXP 编写 漏洞挖掘- 指纹信息 修复建议- 漏洞修复 漏洞原理 漏洞描述 Fastjson 存在反序列化远程代码执行漏洞&#xff0c;当应用或系统使用 Fastjson 对由…

全志T113-S3入门资料汇总(避坑指南)一

也是闲着无事买了个芒果派的T113的小板子&#xff0c;因为自己以前搞过Linux&#xff0c;工作也跟Linux相关&#xff0c;本以为可以很快搞好开发环境&#xff0c;结果还是折腾了两个周末&#xff0c;所以就把资料整理下&#xff0c;关键的地方列出来&#xff0c;希望大家少走弯…

实现稳定可靠的消息通信:Paho MQTT Android

实现稳定可靠的消息通信&#xff1a;Paho MQTT Android 该项目基于java版本paho mqtt android实现&#xff0c;使用kotlin语言重新实现&#xff0c;它是一个用Kotlin编写的MQTT客户端库&#xff0c;旨在提供可靠的开源实现&#xff0c;适用于面向物联网&#xff08;IoT&#x…

为什么vector容器的begin()既可以被iterator 也可以被const_iterator指向?

答&#xff1a;vector容器中的begin&#xff08;&#xff09;是函数接口&#xff0c;它作为函数&#xff0c;被重载了。 typedef T* iterator; typedef const T* const_iterator; iterator begin();//括号中有隐含形参*this&#xff1b; const_iterator begin() const;//形参为…

Vue3中快速简单使用CKEditor 5富文本编辑器

Vue3简单使用CKEditor 5 前言准备定制基础配置富文本配置目录当前文章demo目录结构 快速使用demo 前言 CKEditor 5就是内嵌在网页中的一个富文本编辑器工具 CKEditor 5开发文档&#xff08;英文&#xff09;&#xff1a;https://ckeditor.com/docs/ckeditor5/latest/index.htm…

对话 Gear|波卡生态下一代 WASM 智能合约平台

在 Polkadot 生态中&#xff0c;Gear 正在创建一个托管智能合约的网络。每个人都可以在 Polkadot 和 Kusama 上部署 dApp&#xff0c;不仅可以充分利用其生态系统的所有优势&#xff0c;而且成本更低。因其无需开发者从零开始构建和运营完整的区块链网络&#xff0c;所以 Gear …

TSINGSEE青犀/视频分析/边缘计算/AI算法·人员/区域入侵功能——多场景高效运用

TSINGSEE青犀视频人员/区域入侵功能可对重要区域进行实时监测&#xff0c;对监控区域进行7*24全天候管控&#xff0c;当监测到有人员靠近、闯入时&#xff0c;AI算法后台就会立即发出告警及时通知管理人员&#xff0c;变被动“监督”为主动“监控”&#xff0c;真正做到事前预警…

团队高效协作有多重要?介绍一些优秀的团队协作工具

不论企业大小&#xff0c;团队协作对企业来说是至关重要的&#xff0c;它可以对业务运营和组织效率产生积极影响。 当团队成员能够协同工作、分享信息和资源时&#xff0c;工作流程更加顺畅&#xff0c;决策更加快速且准确。分工合作和共享知识可以减少重复劳动&#xff0c;提…

【猿灰灰赠书活动 - 05期】- 【速学Linux:系统应用从入门到精通】

&#x1f468;‍&#x1f4bb;本文专栏&#xff1a;赠书活动专栏&#xff08;为大家争取的福利&#xff0c;免费送书&#xff09; &#x1f468;‍&#x1f4bb;本文简述&#xff1a;博文为大家争取福利&#xff0c;与机械工业出版社合作进行送书活动 &#x1f468;‍&#x1f…

【腾讯云生态大会】腾讯云向量数据库

【腾讯云生态大会】腾讯云向量数据库 一、 腾讯云向量数据库介绍二、向量数据库的产品规格三、向量数据库关键概念四、向量数据库的使用之新建数据库实例五、向量数据库的初体验六、向量数据库的使用之检索性能压测七、总结 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;让…

MNIST手写数字辨识-cnn网路 (机器学习中的hello world,加油)

用PyTorch实现MNIST手写数字识别(非常详细) - 知乎 (zhihu.com) 参考来源&#xff08;这篇文章非常适合入门来看&#xff0c;每个细节都讲解得很到位&#xff09; 一、模块函数用法-查漏补缺&#xff1a; 1.关于torch.nn.functional.max_pool2d()的用法&#xff1a; 上述示例…

56、springboot ------ RESTful服务及RESTful接口设计

★ RESTful服务 RESTful服务是“前后端分离”架构中的主要功能&#xff1a; 后端应用对外暴露RESTful服务&#xff0c;前端应用则通过RESTful服务与后端应用交互。后端应用 RESTful接口 <------------------> 前端★ 基于JSON的RESTful服务 使用RestController注解…

Linux 系统时间同步 ​使用 NTP 服务时间同步​

目录 一、使用 NTP 服务时间同步 二、启动并设置开机自启 三、配置文件 在 /etc/ntp.conf 四、局域网指定一台服务器作为 时间服务器 一、使用 NTP 服务时间同步 安装 ntp yum -y install ntp 二、启动并设置开机自启 systemctl start ntpd systemctl enable ntpd #开…

vue+antd——实现table表格的打印——分页换行,每页都有表头——基础积累

这里写目录标题 场景效果图功能实现1&#xff1a;html代码功能实现2&#xff1a;css样式功能实现3&#xff1a;js代码补充内容page-break-inside 属性page-break-after属性page-break-before 属性 场景 最近在写后台管理系统时&#xff0c;遇到一个需求&#xff0c;就是要实现…

【独家工具】JMeterPerfReporter3.0正式版本,让你的JMeter更好用

Lemon-JMeterPerfReporter工具&#xff0c;是我们性能测试课程教研组根据JMeter性能测试报告的不足&#xff0c;定制开发的一个性能报告生成工具。有需要的同学&#xff0c;可以通过小编官方gitee账户下载&#xff0c;或咨询我免费获取哦&#xff01; 做过性能测试的人员都知道…