当前位置: 首页 > news >正文

【Pytorch✨】LSTM 入门

🪶 一、LSTM 是什么?

LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN),能够记住“过去的信息”并决定“哪些记住,哪些忘掉”。

它非常适合处理以下这种“时间有关”的任务:

  • 给一段文字,让模型猜下一个词
  • 给一段语音,让模型识别其中内容
  • 给一串气温数据,让模型预测明天的温度

🪶 二、为什么叫“长短期记忆”?

这个名字说明了它的最大特点:

含义
Long(长期)能保留很久以前的有用信息,比如前面的一个关键词
Short(短期)也能处理最近刚刚输入的信息
Memory(记忆)就像人脑一样,记住或忘记信息有“策略”和“意图”

传统的 RNN 容易“忘掉”很久之前的信息,而 LSTM 通过“门控结构”克服了这个问题!


📥 三、LSTM 的输入/输出长什么样?

假设我们用 LSTM 来预测天气(气温),你有:

数据: [21.0, 21.3, 21.8] → 想预测下一个值 22.0
输入 X 是形状为 [batch_size, seq_len, input_size] 的张量

可以理解成:一次给 LSTM 喂多少条序列,每条序列有多少时间步,每个时间步的输入有多少个特征

例如:`[[[21.0], [21.3], [21.8]]]` → `[1, 3, 1]`
名称含义举例
batch_size一次送入模型的“样本数量”(多少条数据)10 表示一次训练 10 条序列
seq_len每条序列的“时间步”长度(有几个输入)5 表示每条数据是 5 天的气温
input_size每个时间步包含几个“特征”1 表示每步只输入一个数字(如温度)
输出 y 是下一个值,比如 [[22.0]]

🪶 四、LSTM 的内部结构(过程)

LSTM 的核心是 “三个门 + 一个细胞状态”:

          ┌─────────────────────────────┐
输入 →───►│ 1. 遗忘门(forget gate)     │  ← 过去记忆决定要忘掉多少└─────────────────────────────┘┌─────────────────────────────┐
输入 →───►│ 2. 输入门(input gate)       │  ← 新信息能不能写入记忆└─────────────────────────────┘┌─────────────────────────────┐
过去记忆 →│ 3. 输出门(output gate)      │──► 输出(隐状态)给下一步└─────────────────────────────┘

小结

作用
遗忘门决定“旧记忆要不要保留”
输入门决定“新输入要不要加入到记忆中”
输出门决定“当前记忆要不要输出到下一个”

🪶 五、整体流程图

时间步1     时间步2     时间步3
x₁ ─┬─► LSTM ─► h₁ ─┬─► LSTM ─► h₂ ─┬─► LSTM ─► h₃│               │               │c₁(记忆)      c₂(记忆)      c₃(记忆)

每个时间步都会:

  • 接收一个输入 xₜ
  • 接收前一个时间步的隐藏状态 hₜ₋₁ 和记忆状态 cₜ₋₁
  • 输出当前的隐藏状态 hₜ 和更新后的记忆 cₜ

http://www.lryc.cn/news/608194.html

相关文章:

  • Next.js 怎么使用 Chakra UI
  • 洛谷做题4:P5713 【深基3.例5】洛谷团队系统
  • OAuth 2.0 详解:现代授权的核心协议
  • 知识随记-----Qt 实战教程:使用 QNetworkAccessManager 发送 HTTP POST
  • Web前端实现银河粒子流动特效的3种技术方案对比与实践
  • C#中的除法
  • 【Web】CCF智能汽车大赛-CTF遴选赛 wp
  • LVGL代码框架简介
  • 苹果MAC 安卓模拟器
  • 计算机网络:任播和负载均衡的区别
  • 【QT】Qt信号与槽机制详解信号和槽的本质自定义信号和槽带参数的信号和槽
  • 【Python修仙编程】(二) Python3灵源初探(11)
  • linux中pthread_t 的值与top -Hp中线程id值的区别
  • 知识随记-----用 Qt 打造优雅的密码输入框:添加右侧眼睛图标切换显示
  • Autosar Nm-网管报文PNC停发后无法休眠问题排查
  • Antlr4在Windows环境下的配置
  • 涉水救援机器人cad【12张】三维图+设计书明说
  • Vue 服务端渲染 Nuxt 使用详解
  • AI Agent开发学习系列 - LangGraph(6): 有多个节点的Sequential Graph(练习解答)
  • 深入理解C++中的Lazy Evaluation:延迟计算的艺术
  • LangGraph认知篇-Command函数
  • UDP通信中BIND端口号的作用解析,LOCALPORT的关系解析
  • 搜索与图论(最小生成树 二分图)
  • 【Django】-5- ORM的其他用法
  • 企业级单点登录(SSO)技术详解:从原理到安全实践
  • 前端与后端部署大冒险:Java、Go、C++三剑客
  • ARM Cortex-M异常处理高级特性详解
  • 集成电路学习:什么是HAL硬件抽象层
  • 【DL学习笔记】计算图与自动求导
  • 紧急救援!Oracle RAC节点驱逐元凶:私网Packet Reassembles Failed“包重组失败”一招救命