当前位置: 首页 > 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.dtcms.com/a/311172.html

相关文章:

  • 用 Qt 打造优雅的密码输入框:添加右侧眼睛图标切换显示
  • 云环境K8s集群WebSocket连接失败解决方案
  • 深入解析 <component :is> 在 Vue3 组合式中的使用与局限
  • 关于Web前端安全防御之点击劫持的原理及防御措施
  • Docker容器中文PDF生成解决方案
  • JavaScript特殊集合WeakMap 的使用及场景介绍
  • C++ lambda表达式与线程库
  • String boot 接入 azure云TTS
  • 20250802安装CP2102N的驱动程序(适配飞凌的OK3576-C)
  • 如何在Ubuntu上部署excalidraw
  • Seal Report:一款免费开源的报表工具
  • 使用 BERT 的 NSP 实现语义感知切片 —— 提升 RAG 系统的检索质量
  • 计算机网络:什么是任播
  • 【计算机网络】Socket网络编程
  • 从零开始构建AI Agent评估体系:12种LangSmith评估方法详解
  • QUdpSocket 详解:从协议基础、通信模式、数据传输特点、应用场景、调用方式到实战应用全面解析
  • Linux网络编程【基于UDP网络通信的字典翻译服务】
  • M|银翼杀手
  • Web 开发 10
  • K8s+Nginx-ingress+Websocket基础知识理解
  • 系统思考:超越线性分析
  • python创建一个excel文件
  • MyBatis 批量操作 XML 实现方式
  • 【BTC】挖矿难度调整
  • Vue 详情模块 3
  • Matplotlib - Python图表可视化利器
  • Vue3核心语法进阶(computed与监听)
  • 除数博弈(动态规划)
  • cs336之注意pytorch的tensor在哪里?(assert的使用)
  • vue3渲染html数据并实现文本修改