第2天:认识LSTM

news2025/6/7 12:01:52
  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

目标

具体实现

(一)环境

语言环境:Python 3.10
编 译 器: PyCharm
框 架: pytorch

(二)具体步骤
1. 什么是LSTM

LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊的循环神经网络(RNN),专门设计来解决传统RNN在处理长序列时遇到的梯度消失问题。

📖 LSTM的发展背景

传统RNN在处理长序列时面临两个主要问题:

  • 梯度消失:随着序列长度增加,早期信息的梯度会急剧衰减
  • 梯度爆炸:梯度可能变得过大,导致训练不稳定
    LSTM通过引入"门控机制"和"细胞状态"来解决这些问题。

🔧 LSTM的核心组件

LSTM单元包含三个门和一个细胞状态:

1. 遗忘门(Forget Gate)

f_t = σ(W_f · [h_{t-1}, x_t] + b_f)
  • 作用:决定从细胞状态中丢弃什么信息
  • 输出:0到1之间的值,0表示完全遗忘,1表示完全保留

2. 输入门(Input Gate)

i_t = σ(W_i · [h_{t-1}, x_t] + b_i)
C̃_t = tanh(W_C · [h_{t-1}, x_t] + b_C)
  • 作用:决定什么新信息被存储在细胞状态中
  • 两部分:决定更新什么值 + 创建候选值

3. 输出门(Output Gate)

o_t = σ(W_o · [h_{t-1}, x_t] + b_o)
h_t = o_t * tanh(C_t)
  • 作用:决定输出什么部分的细胞状态

4. 细胞状态(Cell State)

C_t = f_t * C_{t-1} + i_t * C̃_t
  • 作用:LSTM的"记忆",信息可以在其中流动

🎯 LSTM的工作流程

让我用一个形象的比喻来解释:
想象LSTM是一个智能的信息管理系统

  1. 遗忘门像一个"删除键",决定删除哪些过时信息
  2. 输入门像一个"筛选器",决定接收哪些新信息
  3. 细胞状态像一个"主内存",存储重要信息
  4. 输出门像一个"发布器",决定输出什么信息

📊 LSTM vs 传统RNN对比

特征传统RNNLSTM
记忆能力短期记忆长短期记忆
梯度问题梯度消失严重有效缓解
参数数量较少较多(约4倍)
训练复杂度简单复杂
长序列处理困难擅长
2. 网络结构
import torch  
import torch.nn as nn  
  
class SimpleLSTM(nn.Module):  
    def __init__(self, input_size, hidden_size, num_layers, output_size):  
        """  
        类初始化  
        :param input_size: 每个时间步的输入特征维度  
        :param hidden_size:  LSTM隐藏状态的维度,也决定了LSTM内部门控单元的大小  
        :param num_layers: LSTM的层数  
        :param output_size: 最终输出的维度  
        """        super(SimpleLSTM, self).__init__()  
  
        # 定义LSTM层  
        # 其中batch_first=True:指定输入张量的格式为(batch_size, seq_len, input_size)  
        # 如果不设置,默认格式是(seq_len, batch_size, input_size)  
        self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)  
        # 定义一个线性层,将LSTM输出映射到期望的输出维度  
        self.fc = nn.Linear(hidden_size, output_size)  
  
    def forward(self, x):  
        # LSTMn层的前向传播,默认返回output和(hidden, cell_state)  
        # lstm_out:shape(batch_size, seq_len, hidden_size)        # hn:最终的隐藏状态,形状为(num_layers, batch_size, hidden_size)  
        # cn:最终的记忆状态,形状为(num_layers, batch_size, hidden_size)与hn相同  
        lstm_out, (hn, cn) = self.lstm(x)  
  
        # 取最后一个时间步输出  
        lstm_out = lstm_out[:, -1, :]  
  
        # 通过全连接层将LSTM输出映射到输出维度  
        output = self.fc(lstm_out)  
  
        return output  
  
# 参数设置  
input_size = 10 # 输入特征的维度  
hidden_size = 20 # LSTM隐藏层的维度  
num_layers = 2 # LSTM的层数  
output_size = 1 #  输出的维度  
  
# 创建模型实例  
model = SimpleLSTM(input_size, hidden_size, num_layers, output_size)  
  
# 打印模型结构  
print(model)  
  
# 示例输入(batch_size, seq_len, input_size)  
x = torch.randn(5, 15, input_size)  # 本例相当于(5, 15, 10)  
  
# 前向传播  
output = model(x)  
# 计算过程如下:  
# 1. 输入:(5, 15, 10)  
# 2. LSTM处理:(5, 15, 10) -> (5, 15, 20)  
# 3. 取最后的时间步: (5, 15, 20) -> (5, 20)  
# 4. 全连接层:(5, 20) -> (5, 1)  
  
# 输出结果  
print("输入shape为:", x.shape)  
print("输出shape为:", output.shape)

image.png

(三)总结
LSTM的典型应用
1. 自然语言处理
  • 机器翻译
  • 情感分析
  • 文本生成
2. 时间序列预测
  • 股票价格预测
  • 天气预报
  • 销售预测
3. 语音识别
  • 语音到文本转换
  • 语音合成
4. 其他序列任务
  • 视频分析
  • 生物序列分析
  • 异常检测

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

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

相关文章

自动化提示生成框架(AutoPrompt)

自动化提示生成框架(AutoPrompt) 一、核心创新点 自动化提示生成框架(AutoPrompt) 创新本质:提出基于梯度引导搜索的自动化提示生成方法,替代人工设计模板的传统模式。技术路径: 将提示视为可训练的离散token序列,通过优化提示向量(prompt embedding)搜索语义空间。利…

中国首套1公里高分辨率大气湿度指数数据集(2003~2020)

时间分辨率:月空间分辨率:100m - 1km共享方式:开放获取数据大小:34.79 GB数据时间范围:2003-01-01 — 2020-12-31元数据更新时间:2023-07-26 数据集摘要 中国首套1公里高分辨率大气湿度指数数据集&#xf…

计算机视觉顶刊《International Journal of Computer Vision》2025年5月前沿热点可视化分析

追踪计算机视觉领域的前沿热点是把握技术发展方向、推动创新落地的关键,分析这些热点,不仅能洞察技术趋势,更能为科研选题和工程实践提供重要参考。本文对计算机视觉顶刊《International Journal of Computer Vision》2025年5月前沿热点进行了…

python学习打卡day45

DAY 45 Tensorboard使用介绍 知识点回顾: tensorboard的发展历史和原理tensorboard的常见操作tensorboard在cifar上的实战:MLP和CNN模型 效果展示如下,很适合拿去组会汇报撑页数: 作业:对resnet18在cifar10上采用微调策…

Verilog编程技巧01——如何编写三段式状态机

前言 Verilog编程技巧系列文章将聚焦于介绍Verilog的各种编程范式或者说技巧,编程技巧和编程规范有部分重合,但并非完全一样。规范更注重编码的格式,像变量命名、缩进、注释风格等,而编程技巧则更偏重更直观易读、更便于维护、综合…

智启未来:当知识库遇见莫奈的调色盘——API工作流重构企业服务美学

目录 引言 一、初识蓝耘元生代MaaS平台 1.1 平台架构 1.2 平台的优势 1.3 应用场景 二、手把手教你如何在蓝耘进行注册 (1)输入手机号,将验证码正确填入即可快速完成注册 (2)进入下面的页面表示已经成功注册&…

如何在 Windows 11 中永久更改默认浏览器:阻止 Edge 占据主导地位

在 Windows 11 中更改默认浏览器对于新手或技术不太熟练的用户来说可能会令人沮丧。 为什么要在 Windows 11 中更改默认浏览器? 这是一个重要的问题:你为什么要从 Microsoft Edge 切换过来? 生态系统集成:如果你已经在广泛使用 Google 服务,Chrome 可以提供无缝集成。同…

量子比特实现方式

经典计算机是通过电子电路运转起来的。使用硅制半导体制成的名为晶体管的小元件发挥了开关的作用,将其与金属布线组合起来即可实现逻辑门,再将逻辑门集成起来就能制造出经典计算机。量子计算机的制造过程则要复杂许多,因为量子计算机既需要量…

智慧水务发展迅猛:从物联网架构到AIoT系统的跨越式升级

AI大模型引领智慧水务迈入新纪元 2025年5月25日,水利部自主研发的“水利标准AI大模型”正式发布,它标志着水务行业智能化进程的重大突破。该模型集成1800余项水利标准、500余项法规及海量科研数据,支持立项、编制、审查等全流程智能管理&…

Java高级 | 【实验五】Spring boot+mybatis操作数据库

隶书文章:Java高级 | (二十二)Java常用类库-CSDN博客 系列文章:Java高级 | 【实验一】Springboot安装及测试 |最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot 静…

在MATLAB中使用自定义的ROS2消息

简明结论: 无论ROS2节点和MATLAB运行在哪,MATLAB本机都必须拥有自定义消息源码并本地用ros2genmsg生成,才能在Simulink里订阅这些消息。只要你想让MATLAB或Simulink能识别自定义消息,必须把消息包源码(.msg等)拷到本机指定目录&a…

【MATLAB去噪算法】基于ICEEMDAN联合小波阈值去噪算法

ICEEMDAN联合小波阈值去噪算法相关文献 (注:目前相关论文较少,应用该套代码可发直接一些水刊) 一、CEEMDAN的局限性 模式残留噪声问题:原始CEEMDAN在计算每个IMF时直接对噪声扰动的信号进行模态分解并平均。 后果&a…

XXTEA,XTEA与TEA

TEA、XTEA和XXTEA都是分组加密算法,它们在设计、安全性、性能等方面存在显著区别。以下是它们的主要区别: 密钥长度 TEA:使用128位密钥。 XTEA:通常使用128位或256位密钥。 XXTEA:密钥长度更灵活,可以使用任…

机器人玩转之---嵌入式开发板基础知识到实战选型指南(包含ORIN、RDK X5、Raspberry pi、RK系列等)

1. 基础知识讲解 1.1 什么是嵌入式开发板? 嵌入式开发板是一种专门设计用于嵌入式系统开发的硬件平台,它集成了微处理器、内存、存储、输入输出接口等核心组件于单块印刷电路板上。与传统的PC不同,嵌入式开发板具有体积小、功耗低、成本适中…

腾讯云国际版和国内版账户通用吗?一样吗?为什么?

在当今全球化的数字化时代,云计算服务成为众多企业和个人拓展业务、存储数据的重要选择。腾讯云作为国内领先的云服务提供商,其国际版和国内版备受关注。那么,腾讯云国际版和国内版账户是否通用?它们究竟一样吗?背后又…

OrCAD X Capture CIS设计小诀窍系列第二季--03.如何在Capture中输出带有目录和元器件信息的PDF

背景介绍:我们在进行原理图设计时,经常需要输出PDF来查看或评审,但通过”Print”功能导出的PDF较为简单,只能查看设计视图;而通过使用Ghostscript软件可以输出带有目录和元器件信息的PDF,让设计师可以直接在…

汽车的安全性能测试:试验台铁地板的重要性

汽车的安全性能测试是非常重要的,其中试验台铁地板的设计和材料选择起着至关重要的作用。试验台铁地板是指在进行汽车碰撞、侧翻等试验时,用于支撑汽车底部和提供稳定支撑的重要部件。 在进行汽车碰撞试验时,试验台铁地板的设计和材料需要具…

实践指南:从零开始搭建RAG驱动的智能问答系统

LLM 赋能的最强大的应用之一是复杂的问答 (Q&A) 聊天机器人。这些是可以回答关于特定来源信息问题的应用程序。这些应用程序使用一种称为检索增强生成的技术,或 RAG。本文将展示如何基于 LangChain 构建一个简单的基于非结构化数据文本数据源的问答应用程序。 温…

边缘计算服务器

边缘计算服务器的核心要点解析,综合技术架构、应用场景与部署方案: 一、核心定义与技术特性‌ 本质定位‌ 部署在网络边缘侧的专用计算设备(如工厂车间、智慧路灯等),直接处理终端设备(传感器、摄像头等…

第R9周:阿尔茨海默病诊断(优化特征选择版)

文章目录 1. 导入数据2. 数据处理2.1 患病占比2.2 相关性分析2.3 年龄与患病探究 3. 特征选择4. 构建数据集4.1 数据集划分与标准化4.2 构建加载 5. 构建模型6. 模型训练6.1 构建训练函数6.2 构建测试函数6.3 设置超参数 7. 模型训练8. 模型评估8.1 结果图 8.2 混淆矩阵9. 总结…