LSTM和GRU的解析从未如此通俗易懂(动图)

640?wx_fmt=gif

向AI转型的程序员都关注了这个号👇👇👇

机器学习AI算法工程  公众号: datayx

▌短时记忆

640?wx_fmt=png

                                            梯度更新规则

▌作为解决方案的 LSTM 和 GRU

640?wx_fmt=jpeg

AI项目体验地址 https://loveai.tech

本质

640?wx_fmt=gif

640?wx_fmt=gif

                              将隐藏状态传递给下一个时间步

640?wx_fmt=gif

                                          RNN 细胞

激活函数 Tanh

640?wx_fmt=gif

640?wx_fmt=gif

                                      没有 tanh 函数的向量转换

640?wx_fmt=gif

                                         有 tanh 函数的向量转换

640?wx_fmt=jpeg

LSTM 的细胞结构和运算

核心概念

Sigmoid

640?wx_fmt=gif

Sigmoid 将值压缩到 0~1 之间遗忘门

640?wx_fmt=gif输入门

640?wx_fmt=gif

                                      输入门的运算过程细胞状态

640?wx_fmt=gif

                                        细胞状态的计算输出门

640?wx_fmt=gif

                                               输出门的运算过程

代码示例

640?wx_fmt=jpeg

python 写的伪代码

640?wx_fmt=jpeg

                                 GRU 的细胞结构和门结构

更新门重置门https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21


阅读过本文的人还看了以下:

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

640?wx_fmt=jpeg

长按图片,识别二维码,点关注

AI项目体验

https://loveai.tech

640?wx_fmt=png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LSTM(Long Short-Term Memory)和GRU(Gated Recurrent Unit)是两种常用的循环神经网络(RNN)模型,用于解决序列数据建模中的长期依赖问题。它们在模型结构和计算方式上有一些区别。 LSTM模型结构: LSTM模型由输入门、遗忘门和输出门组成。输入门控制新输入的信息是否进入细胞状态,遗忘门控制细胞状态中的信息是否被遗忘,输出门控制细胞状态中的信息是否输出到下一层。LSTM通过这些门的控制,可以有效地处理长期依赖关系。 GRU模型结构: GRU模型也由更新门和重置门组成。更新门决定了新的输入信息和前一时刻的隐藏状态之间的权重,重置门决定了前一时刻的隐藏状态对当前时刻的影响程度。GRU通过这两个门的控制,可以在一定程度上解决长期依赖问题。 LSTMGRU的比较: 1. LSTMGRU在很多情况下表现相似,但是GRU的计算更简单,更易于实现。 2. LSTM具有更复杂的门控机制,可以更好地处理长期依赖关系,但是计算量较大。 3. GRU通过更新门和重置门的控制,可以在一定程度上解决长期依赖问题,计算量较小。 代码实现: 以下是GRU模型的代码实现示例: ```python import torch import torch.nn as nn # 定义GRU模型 class GRUModel(nn.Module): def __init__(self, input_size, hidden_size, num_layers, output_size): super(GRUModel, self).__init__() self.hidden_size = hidden_size self.num_layers = num_layers self.gru = nn.GRU(input_size, hidden_size, num_layers, batch_first=True) self.fc = nn.Linear(hidden_size, output_size) def forward(self, x): h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size).to(x.device) out, _ = self.gru(x, h0) out = self.fc(out[:, -1, :]) return out # 创建GRU模型实例 input_size = 10 hidden_size = 20 num_layers = 2 output_size = 1 model = GRUModel(input_size, hidden_size, num_layers, output_size) print(model) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值