Keras 循环神经网络长短期记忆(LSTM)迷你课程

长短期记忆(LSTM)循环神经网络是目前最令人兴奋的深度学习类型之一。

它们已被用于在复杂的领域中取得世界一流的成果,例如语言翻译、自动图像字幕和文本生成。

LSTM 与多层感知器和卷积神经网络不同,它们是专门为序列预测问题设计的。

在本迷你课程中,您将了解如何快速将 LSTM 模型应用于您自己的序列预测问题。

完成本迷你课程后,您将了解:

  • 什么是 LSTM,它们如何训练,以及如何为训练 LSTM 模型准备数据。
  • 如何开发一套 LSTM 模型,包括堆叠式、双向式和编码器-解码器模型。
  • 如何通过超参数优化、更新和最终化模型来充分利用您的模型。

开始您的项目,阅读我的新书《Python 中的长短期记忆网络》,其中包含分步教程和所有示例的Python 源代码文件。

让我们开始吧。

注意:这是一个大型指南,您可能想将其加入书签。

Mini-Course on Long Short-Term Memory Recurrent Neural Networks with Keras

Keras 循环神经网络长短期记忆(LSTM)迷你课程
照片由 Nicholas A. Tonelli 拍摄,部分权利保留。

本迷你课程适合谁?

在开始之前,让我们确保您来对了地方。

本课程面向了解一些应用机器学习知识,并希望快速掌握 LSTM 的开发人员。

也许您想或需要开始在您的项目中使用 LSTM。本指南旨在帮助您快速有效地完成此操作。

  • 您熟悉 Python。
  • 您熟悉 SciPy。
  • 您知道如何在您的工作站上安装软件。
  • 您知道如何处理自己的数据。
  • 您知道如何通过机器学习解决预测建模问题。
  • 您可能对深度学习略知一二。
  • 您可能对Keras略知一二。

您知道如何设置您的工作站以使用 Keras 和 scikit-learn;如果不知道,可以在这里了解如何进行。

本指南采用您习惯的自顶向下、结果优先的机器学习风格编写。它将教您如何取得成果,但它并非万能药。

通过完成本指南,您将获得有用的技能。

完成本课程后,您将:

  • 了解 LSTM 的工作原理。
  • 了解如何为 LSTM 准备数据。
  • 了解如何应用一套不同类型的 LSTM。
  • 了解如何根据特定问题调整 LSTM。
  • 了解如何保存 LSTM 模型并使用它进行预测。

接下来,让我们回顾一下课程内容。

需要 LSTM 帮助进行序列预测吗?

参加我的免费7天电子邮件课程,了解6种不同的LSTM架构(附代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

迷你课程概述

本迷你课程分为 14 个课时。

您可以每天完成一个课时(推荐),或者一天内完成所有课时(硬核!)。

这 realmente 取决于您可用的时间和您的热情程度。

以下是 14 个课时,将帮助您开始使用 Python 中的 LSTM 并变得熟练。这些课时分为三个主要主题:基础、模型和高级。

Overview of LSTM Mini-Course

LSTM 迷你课程概述

基础知识

这些课时的重点是您在使用 LSTM 之前需要了解的内容。

  • 第 01 课:什么是 LSTM?
  • 第 02 课:LSTM 如何训练
  • 第 03 课:如何为 LSTM 准备数据
  • 第 04 课:如何在 Keras 中开发 LSTM

模型

  • 第 05 课:如何开发标准 LSTM
  • 第 06 课:如何开发堆叠式 LSTM
  • 第 07 课:如何开发 CNN LSTM
  • 第 08 课:如何开发编码器-解码器 LSTM
  • 第 09 课:如何开发双向 LSTM
  • 第 10 课:如何开发带注意力机制的 LSTM
  • 第 11 课:如何开发生成式 LSTM

高级

  • 第 12 课:如何调整 LSTM 超参数
  • 第 13 课:如何更新 LSTM 模型
  • 第 14 课:如何使用 LSTM 进行预测

每个课时可能需要您 1 分钟到 60 分钟不等。请花些时间,按照自己的节奏完成这些课时。提出问题,甚至在下面的评论中发布您的结果。

这些课时要求您自行查找如何完成任务。我将为您提供提示,但每个课时的重点之一是强迫您学习在哪里寻求帮助(提示,我在这个博客上都有答案;请使用搜索功能)。

在早期的课程中,我确实提供了更多的帮助,因为我希望你建立一些信心和惯性。

坚持下去;不要放弃!

基础知识

本节的课时旨在帮助您了解 LSTM 的工作原理以及如何使用 Keras 库实现 LSTM 模型。

第 1 课:什么是 LSTM?

目标

本课时的目标是从高层次上理解 LSTM,以便您能够向同事或经理解释它们是什么以及它们如何工作。

问题

  • 什么是序列预测?它有哪些一般性示例?
  • 传统神经网络在序列预测方面有哪些局限性?
  • RNN 在序列预测方面有什么优势?
  • 什么是 LSTM?它有哪些组成部分?
  • LSTM 的一些突出应用有哪些?

进一步阅读

第 2 课:LSTM 如何训练

目标

本课时的目标是了解 LSTM 模型如何基于示例序列进行训练。

问题

  • 传统 RNN 训练中存在哪些常见问题?
  • LSTM 如何克服这些问题?
  • 用于训练 LSTM 的算法是什么?
  • 随时间反向传播 (Backpropagation Through Time) 如何工作?
  • 什么是截断 BPTT?它有什么好处?
  • 如何在 Keras 中实现和配置 BPTT?

进一步阅读

第 3 课:如何为 LSTM 准备数据

目标

本课时的目标是了解如何准备序列预测数据以供 LSTM 模型使用。

问题

  • 如何准备数字数据以供 LSTM 使用?
  • 如何准备分类数据以供 LSTM 使用?
  • 在使用 LSTM 时,如何处理序列中的缺失值?
  • 如何将序列构建为监督学习问题?
  • 在处理 LSTM 时,如何处理长序列?
  • 如何处理长度不同的输入序列?
  • 如何在 Keras 中重塑 LSTM 的输入数据?

实验

演示如何将数值输入序列转换为适合训练 LSTM 的形式。

进一步阅读

第 4 课:如何在 Keras 中开发 LSTM

目标

本课时的目标是了解如何使用 Python 中的 Keras 深度学习库定义、拟合和评估 LSTM 模型。

问题

  • 如何定义 LSTM 模型?
  • 如何编译 LSTM 模型?
  • 如何拟合 LSTM 模型?
  • 如何评估 LSTM 模型?
  • 如何使用 LSTM 模型进行预测?
  • LSTM 如何应用于不同类型的序列预测问题?

实验

准备一个示例,演示 LSTM 模型在序列预测问题上的生命周期。

进一步阅读

模型

本节的课时旨在教您如何在序列预测问题上使用 LSTM 模型取得成果。

第 5 课:如何开发标准 LSTM

目标

本课时的目标是学习如何开发和评估标准 LSTM 模型。

  • 什么是标准 LSTM 架构?
  • 标准 LSTM 的一些应用示例有哪些?

实验

设计并执行一个实验,在序列预测问题上演示标准 LSTM。

进一步阅读

第 6 课:如何开发堆叠式 LSTM

目标

本课时的目标是学习如何开发和评估堆叠式 LSTM 模型。

问题

  • 在使用具有分层结构的序列问题时,标准 LSTM 会遇到哪些困难?
  • 什么是堆叠式 LSTM?
  • 堆叠式 LSTM 的一些应用示例有哪些?
  • 堆叠式 LSTM 提供哪些好处?
  • 如何在 Keras 中实现堆叠式 LSTM?

实验

设计并执行一个实验,在具有分层输入结构的序列预测问题上演示堆叠式 LSTM。

进一步阅读

第 7 课:如何开发 CNN LSTM

目标

本课时的目标是学习如何开发在前端使用卷积神经网络的 LSTM 模型。

问题

  • 使用标准 LSTM 处理空间输入数据有哪些困难?
  • 什么是 CNN LSTM 架构?
  • CNN LSTM 的一些示例有哪些?
  • CNN LSTM 提供哪些好处?
  • 如何在 Keras 中实现 CNN LSTM 架构?

实验

设计并执行一个实验,在具有空间输入的序列预测问题上演示 CNN LSTM。

进一步阅读

第 8 课:如何开发编码器-解码器 LSTM

目标

本课时的目标是学习如何开发编码器-解码器 LSTM 模型。

问题

  • 什么是序列到序列(seq2seq)预测问题?
  • 使用标准 LSTM 处理 seq2seq 问题有哪些困难?
  • 什么是编码器-解码器 LSTM 架构?
  • 编码器-解码器 LSTM 的一些示例有哪些?
  • 编码器-解码器 LSTM 提供哪些好处?
  • 如何在 Keras 中实现编码器-解码器 LSTM?

实验

设计并执行一个实验,在序列到序列预测问题上演示编码器-解码器 LSTM。

进一步阅读

第 9 课:如何开发双向 LSTM

目标

本课时的目标是学习如何开发双向 LSTM 模型。

问题

  • 什么是双向 LSTM?
  • 双向 LSTM 的一些应用示例有哪些?
  • 与标准 LSTM 相比,双向 LSTM 提供哪些好处?
  • 双向架构在时间步长方面会引发哪些担忧?
  • 如何在 Keras 中实现双向 LSTM?

实验

设计并执行一个实验,在序列预测问题上比较前向、后向和双向 LSTM 模型。

进一步阅读

第 10 课:如何开发带注意力机制的 LSTM

目标

本课时的目标是学习如何开发带注意力机制的 LSTM 模型。

问题

  • 包含无用信息的长序列对 LSTM 有何影响?
  • LSTM 模型中的注意力机制是什么?
  • 注意力机制在 LSTM 中的一些应用示例有哪些?
  • 注意力机制为序列预测提供了什么好处?
  • 如何在 Keras 中实现注意力架构?

实验

设计并执行一个实验,将注意力机制应用于包含大量无用信息的长序列预测问题。

进一步阅读

第 11 课:如何开发生成式 LSTM

目标

本课时的目标是学习如何开发用于生成模型中的 LSTM。

  • 什么是生成模型?
  • LSTM 如何用作生成模型?
  • LSTM 作为生成模型的一些示例有哪些?
  • LSTM 作为生成模型有什么好处?

实验

设计并执行一个实验,学习文本语料库,并生成具有相同语法、结构和风格的新文本样本。

进一步阅读

高级

本节的课时旨在教您如何充分利用 LSTM 模型来解决您自己的序列预测问题。

第 12 课:如何调整 LSTM 超参数

目标

本课时的目标是学习如何调整 LSTM 超参数。

问题

  • 如何诊断 LSTM 模型的过度拟合或拟合不足?
  • 有哪些方法可以调整模型超参数?
  • 鉴于 LSTM 是随机算法,如何可靠地估算模型技能?
  • 列出可以调整的 LSTM 超参数,并举例说明可以为以下项评估的值:
    • 模型初始化和行为。
    • 模型架构和结构。
    • 学习行为。

实验

设计并执行一个实验,调整 LSTM 的一个超参数并选择最佳配置。

进一步阅读

第 13 课:如何更新 LSTM 模型

目标

本课时的目标是学习在有新数据可用时如何更新 LSTM 模型。

问题

  • 根据新数据更新 LSTM 模型有哪些好处?
  • 有哪些方法可以用新数据更新 LSTM 模型?

实验

设计并执行一个实验,将 LSTM 模型拟合到序列预测问题,并对比不同模型更新方案对模型技能的影响。

进一步阅读

第 14 课:如何使用 LSTM 进行预测

目标

本课时的目标是学习如何最终确定 LSTM 模型并使用它对新数据进行预测。

问题

  • 如何在 Keras 中保存模型结构和权重?
  • 如何拟合最终的 LSTM 模型?
  • 如何使用最终确定的模型进行预测?

实验

设计并执行一个实验,拟合最终的 LSTM 模型,将其保存到文件,然后稍后加载它并对保留的验证数据集进行预测。

进一步阅读

结束!
(看看您取得了多大的进步)

您做到了。干得好!

花点时间回顾一下您已经走了多远。以下是您学到的内容:

  1. LSTM 是什么,以及为什么它们是序列预测的首选深度学习技术。
  2. LSTM 使用 BPTT 算法进行训练,该算法还为您的序列预测问题提供了一种思考方式。
  3. 序列预测的数据准备可能涉及掩码缺失值、拆分、填充和截断输入序列。
  4. Keras 为 LSTM 模型提供了 5 步生命周期,包括定义、编译、拟合、评估和预测。
  5. 标准 LSTM 由输入层、隐藏 LSTM 层和密集输出层组成。
  6. 隐藏 LSTM 层可以堆叠,但必须在层之间公开整个序列的输出。
  7. 在处理图像和视频数据时,CNN 可以用作 LSTM 的输入层。
  8. 编码器-解码器架构可用于预测可变长度的输出序列。
  9. 在双向 LSTM 中提供前向和后向输入序列可以提高某些问题的技能。
  10. 对于包含无用信息的长输入序列,注意力机制可以提供一种优化。
  11. LSTM 可以学习输入数据的结构化关系,进而用于生成新示例。
  12. LSTM 的超参数可以像任何其他随机模型一样进行调整。
  13. 当有新数据可用时,可以更新已拟合的 LSTM 模型。
  14. 最终的 LSTM 模型可以保存到文件,以后加载以对新数据进行预测。

不要小看这一点;您在短时间内取得了长足的进步。

这只是您与 Keras 的 LSTM 之旅的开始。请继续练习并发展您的技能。

总结

您在迷你课程中的表现如何?
您喜欢这个迷你课程吗?

您有任何问题吗?有没有遇到什么难点?
告诉我。在下面留言。

立即开发用于序列预测的 LSTM!

Long Short-Term Memory Networks with Python

在几分钟内开发您自己的 LSTM 模型。

...只需几行python代码

在我的新电子书中探索如何实现
使用 Python 构建长短期记忆网络

它提供关于以下主题的自学教程
CNN LSTM、编码器-解码器 LSTM、生成模型、数据准备、进行预测等等...

最终将 LSTM 循环神经网络引入。
您的序列预测项目。

跳过学术理论。只看结果。

查看内容

42 条关于Keras 中的长短期记忆循环神经网络迷你课程的回复

  1. Mamta 2017年8月16日晚上7:04 #

    你好,
    我如何访问这个迷你课程?

    Mamta

  2. Dharma 2017年8月17日凌晨3:27 #

    您能否直接在这里提供所有内容,而不是通过电子邮件下载?那样阅读您的教程会很棒。

    • Jason Brownlee 2017年8月17日早上6:47 #

      本课程的所有材料都在这篇博客文章中。

      问题的答案可以在博客上找到(或即将找到)。

      我为您完成所有工作,这是一个捷径,就在我的书中。

  3. Simone 2017年8月22日凌晨1:05 #

    嗨,Jason,
    关于数据准备(第 3 课)的一个问题:是否可以使用 LSTM 处理非平稳序列?

    • Jason Brownlee 2017年8月22日早上6:45 #

      可以,但模型技能可能会受到影响。请尝试一下。

  4. Simone 2017年8月23日早上9:18 #

    好的,谢谢!

  5. Ben 2020年3月10日早上5:10 #

    你好 Jason,我正在进行第 4 天开发 CNN LSTM 的工作……

    正在试验这个模型架构:

    model = Sequential()
    model.add(TimeDistributed(Conv1D(filters=64, kernel_size=1, activation='relu'), input_shape=(None, n_steps, n_features)))
    model.add(TimeDistributed(MaxPooling1D(pool_size=2)))
    model.add(TimeDistributed(Flatten()))
    model.add(LSTM(50, activation='relu'))
    model.add(Dense(1))
    model.compile(optimizer='adam', loss='mse')

    我能否在模型中添加更多非时间分布式层?也许有点像 MLP 风格的神经网络,我可以尝试增加模型的深度?如果可以,我该如何进行?

    谢谢!

  6. Ben 2020年3月10日早上7:02 #

    我应该在 TimeDistributed(Flatten())model.add(Dense(1) 层之间添加它们吗?基本上,我是否通过添加更多 model.add(LSTM(50, activation='relu') 层来试验模型的深度?

    • Ben 2020年3月10日早上7:15 #

      例如,如果我增加模型深度:

      # 定义模型
      model = Sequential()
      model.add(TimeDistributed(Conv1D(filters=64, kernel_size=1, activation='relu'), input_shape=(None, n_steps, n_features)))
      model.add(TimeDistributed(MaxPooling1D(pool_size=2)))
      model.add(TimeDistributed(Flatten()))
      model.add(LSTM(50, activation='relu'))
      model.add(LSTM(50, activation='relu'))
      model.add(LSTM(50, activation='relu'))
      model.add(Dense(1))
      model.compile(optimizer='adam', loss='mse')
      # 拟合模型
      model.fit(X, y, epochs=500, verbose=0)

      这将引发错误:
      ValueError: Input 0 is incompatible with layer lstm_2: expected ndim=3, found ndim=2

      非常感谢任何建议!

  7. Gustavo Souza 2020年4月6日早上5:19 #

    你好,

    我正在提交我关于第一天问题的答案(来自迷你课程)

    **什么是序列预测?它有哪些一般性示例?
    序列预测是指使用给定序列的历史信息来预测未来值。一些一般性示例包括:
    股票市场/货币未来价值预测
    设备寿命或维护需求预测
    天气预报
    生产计划和控制

    **传统神经网络在序列预测方面有哪些局限性?
    传统神经网络的结构只有一种信息传递方向——因此是前馈神经网络。这意味着人工神经网络无法考虑过去的信息(例如,对于季节性时间序列),因为层的输出不会影响同一层。

    **RNN 在序列预测方面有什么优势?
    RNN 承诺能够利用反馈循环,将先前输入的输出数据作为信息——创建一种“记忆”单元状态。

    **什么是 LSTM?它有哪些组成部分?
    LSTM 神经网络由四个主要部分组成:输入门、单元状态、遗忘门和输出门,其中单元状态负责神经网络的记忆,而门则调节信息流经神经网络。

    **LSTM 的一些突出应用有哪些?
    自动图像字幕生成、文本自动翻译和自动手写生成

  8. Vije 2020年4月14日早上4:43 #

    你好,
    作为迷你课程的一部分,我已经学习了标准 LSTM,并用 Python Keras 实现和测试了一个示例代码。我使用的是您博客“how-to-develop-lstm-models-for-time-series-forecasting”上的代码。
    我遇到了以下问题:
    原始输入序列为 [10, 20, 30, 40, 50, 60, 70, 80, 90],步数为 3。
    当我输入测试用例 [70,80,90] 进行预测时,结果是 102.09。但是当我输入不同的序列时:例如 [1070, 1080,1090],结果是 1279.5。预期结果是 1100。这是为什么?
    标准 LSTM 是捕获序列模式,还是取决于用于训练的输入序列中的幅度值?

    谢谢您

    • Jason Brownlee 2020年4月14日早上6:29 #

      这些只是用于向您展示如何编写架构的示例性问题。不要担心具体结果。

  9. Marvi 2020年5月20日晚上8:50 #

    您好,我正在研究粒子物理学,LSTM 甚至 RNN 是否适合粒子物理学领域的机器学习方向?

  10. RS ASHWIN 2020年9月28日早上6:33 #

    嗨,Jason,

    此评论是对第一天问题的回复。

    1) 什么是序列预测?它有哪些一般性示例?

    答:序列预测是一个流行的机器学习任务,可用于根据实体序列的过去预测下一个实体。实体可以是数字、字母、单词、事件。例如:文本中的单词或字符序列。客户购买的产品序列。日志中观察到的事件序列。

    2) 传统神经网络在序列预测方面有哪些局限性?

    答:在传统的神经网络中,我们有固定的输入和固定的输出,这对序列预测来说是一个限制。例如,前馈神经网络使用固定大小的输入向量和相关的权重来一次性捕获示例的所有相关方面。这将使得学习可变长度序列变得非常困难,并且无法捕获时间方面。

    3) RNN 在序列预测方面有什么优势?

    答:信息与时间的顺序和流动对于序列预测更重要。例如,像 LSTM 这样的 RNN 可以在学习从输入到输出的映射函数时处理观测的顺序。与传统神经网络相比,在学习时间信息方面更胜一筹。

    4) 什么是 LSTM?它有哪些组成部分?

    答:a) LSTM 代表长短期记忆,这是一种特殊的 RNN,能够学习长期依赖性。LSTM 能够长时间地记住信息。
    b) LSTM 模块有三个门:遗忘门、输入门和输出门。

    5) LSTM 的一些突出应用有哪些?

    答:连笔手写识别、语音识别和网络流量异常检测、入侵检测系统 (IDS)。

  11. Ivan Kim 2020年10月28日晚上3:15 #

    练习 1
    序列预测网络根据包含多个数据的输入(例如,向量)预测输出(例如,标量)。
    考虑输入数据的组成以及其序列非常重要,因为这暗示了输入数据的有意义的含义(时间含义)。
    通过过去的趋势数据进行训练以预测未来股票价格是 LSTM 的一个典型例子。

    练习 2
    据我所知,传统神经网络无法反映输入数据的时序意义,因为它们通过一次(输入)一次(输出)的计算来自我训练。

    练习 3
    遗憾的是,我无法理解问题中“优势”一词的含义,但我会将其理解为您在询问 RNN 的总体思想。
    RNN 使用递归架构从当前步骤的输入数据 (Xt) 和前一步的输出 (Yt-1) 中学习,以保留输入数据序列的含义,并且此计算会贯穿整个步骤,以传递所有输入数据组件。

    练习 4
    RNN 存在梯度消失问题,因为重复乘以有界的(-1~+1)激活函数 (tanh) 是处理信息通过每个步骤的唯一方法(称为隐藏状态:h)。为了应对梯度消失问题,LSTM(RNN 的修订版本)增加了另一种方法(称为单元状态:c)来处理信息流,而不使用有界激活函数来保留输入数据的时序意义。
    LSTM 像 RNN 一样具有隐藏状态,并增加了新的单元状态来解决梯度消失问题。单元状态由 3 个门(遗忘门、输入门、输出门)组成,以执行 LSTM 的理念。

    练习 5
    RNN 在学习当前输入和近期输入数据时表现良好,另一方面,LSTM 则能很好地学习从第一个输入数据到最后一个输入数据。
    因此,LSTM 比 RNN 更能很好地解决长句子的翻译问题。

  12. Tao zhang 2020年12月9日晚上3:24 #

    你好,

    这些是我对第一天问题的答案(来自迷你课程)
    1.什么是序列预测?它有哪些一般性示例?
    答:我认为序列预测是依赖于共文本或前

    文脉的预测。例如填空句子,用温度和湿度预测天气,

    公交车、火车、飞机的出发间隔。
    2.传统神经网络在序列预测方面有哪些局限性?
    答:我想举一个不确定的例子:对于光滑函数预测。序列

    预测意味着我们不仅需要离散点的值,还需要导数

    在离散点上预测函数值的趋势。但是传统神经网络只

    预测离散点的值函数。
    3.RNN 在序列预测方面有什么优势?
    答:我们以第 2 个示例为例。RNN 不仅使用离散点处的当前值,

    还使用前一个离散点的信息(隐藏层输出),我们可以

    将其视为函数导数。这将更加准确。
    4.什么是 LSTM?它有哪些组成部分?
    答:LSTM 是 RNN 的变体,它在一定程度上消除了梯度消失。它包含三个

    状态门,以控制信息是否通过。
    5.LSTM 的一些突出应用有哪些?
    答:据我所知,它用于语言翻译、文本识别、自动

    语音识别。

  13. Tao zhang 2020年12月10日晚上5:50 #

    你好,

    这些是我对第二天问题的答案(来自迷你课程)
    1.标准的LSTM架构是什么?
    答案:标准的LSTM是具有两个隐藏层的LSTM,第一个隐藏层包含三个门。第二个层是用于匹配输出维度的密集层。
    2.标准的LSTM有哪些应用实例?
    答案:抱歉,我对标准LSTM的应用没有想法。

  14. Tao zhang 2020年12月11日 下午3:19 #

    你好,

    这是我对第三天问题的答案(来自迷你课程)
    1.在具有分层结构的时序问题中使用标准LSTM有哪些困难?
    答案:我认为使用标准LSTM的困难在于超参数的设置(例如时间步长),以及数据的依赖性。
    2.什么是堆叠LSTM?
    答案:堆叠LSTM是将两个或多个标准LSTM堆叠起来。这意味着堆叠LSTM具有两个或多个隐藏层。
    4.堆叠LSTM提供了哪些好处?
    答案:堆叠LSTM可以从时序数据中提取更多信息。但据我所知,两个分层堆叠的LSTM对于时序数据来说已经足够了。
    5.如何在Keras中实现堆叠LSTM?
    答案:堆叠LSTM的实现与标准LSTM类似,如果您想在此LSTM之后添加一个LSTM,只需要将return_sequence=True。但有一点需要记住,第一个分层的输出(return_sequence=True)是初始数据序列中第二个单词的时序数据,下一个分层是初始数据序列中第三个单词的时序数据。

  15. Tao zhang 2020年12月15日 下午3:46 #

    你好,

    这是我对第四天问题的答案(来自迷你课程)
    1.使用标准LSTM处理空间输入数据有哪些困难?
    答案:我认为将空间输入数据放入时序数据中很困难。而且时序数据的相关性可能较弱。
    2.什么是CNN LSTM架构?
    答案:CNN LSTM架构是三维输入数据,具有相同的卷积和池化。然后将3D数据作为时序数据输入到LSTM。
    3.CNN LSTM提供了哪些好处?
    答案:我认为最重要的好处是您不需要通过额外的函数来重塑LSTM的输入数据。我们知道,我们通过基于梯度的算法在网络中找到最佳的权重和偏差。如果LSTM位于网络中间,例如ANN LSTM,我们需要将ANN的输出重塑为三维张量才能用于LSTM。但是,我们不知道ANN末端的权重和偏差是否在每个epoch都得到更新。
    3.如何在Keras中实现CNN LSTM架构?
    答案:我们只需要将三维张量作为输入数据放入CNN。然后获取LSTM输出的二维张量。

  16. honey 2021年3月15日 早上6:24 #

    您好,这是我对第一天问题的答案(来自迷你课程)

    ˆ 什么是序列预测,它有哪些一般性示例?

    文本中的单词或字符序列
    客户购买的产品序列
    日志中观察到的事件序列

    ˆ 传统神经网络在序列预测方面有哪些局限性?
    独立考虑特征

    ˆ RNN在序列预测方面有什么前景?
    循环神经网络的缺点
    梯度消失和爆炸问题。
    训练RNN是一项非常艰巨的任务。
    如果使用tanh或relu作为激活函数,它无法处理非常长的序列。

    ˆ 什么是LSTM及其组成部分?
    LSTM的默认行为是能够长时间记住信息。
    每个LSTM模块将有3个门,分别称为遗忘门、输入门、输出门。
    ˆ LSTM有哪些突出的应用?
    时间序列预测。
    语音识别。
    节奏学习。
    音乐创作。
    语法学习。

  17. Victor 2022年1月27日 晚上8:32 #

    您好 Jason,我正在考虑LSTM是否是以下任务的好工具

    – 地图上有许多属于某个客户的x,y点 – 多个不确定输入
    – 每个点都有许多可作为特征的属性(速度、停留时间、应用活动等)

    任务是确定客户喜欢的地方,以 (x1,y1, .. xn, yn) 的形式 – 多个输出

    如果您能回答或建议一些您的工具包中的内容,我将不胜感激。
    谢谢

  18. ana 2022年4月22日 早上5:47 #

    一旦获得了类别,而类别本身是数字,我如何获取属于这些数字的下一个?

  19. Patrick 2023年7月27日 早上3:11 #

    第一天答案
    什么是序列预测?它有哪些一般性示例?
    – 序列是值或几个值的系列。例如,一周内每平方米的降雨量。
    传统神经网络在序列预测方面有哪些局限性?
    -传统神经网络只考虑序列的当前时间步。
    RNN 在序列预测方面有什么优势?
    -展开后,循环连接等同于一个延迟,该延迟传递当前值(如输入、隐藏状态或输出)并将其传递给当前迭代,帮助ANN处理跨时间步的模式。
    什么是 LSTM?它有哪些组成部分?
    -LSTM是一个可以处理序列的模块化单元。
    -输入、单元状态、隐藏状态、遗忘门、输入门、输出门、候选隐藏状态和候选单元状态。
    LSTM 的一些突出应用有哪些?
    – 时间序列预测、翻译,它们被用于Transformer,而ChatGPT使用了Transformer。

    我非常欣赏您的文章以及您与社区的互动方式。我正在为我的论文研究ANN,我的背景是过程工程,并且我没有AI或编程方面的先验知识,除了我本科的必需课程,如matlab、java和微分方程。

    • James Carmichael 2023年7月27日 早上9:15 #

      感谢您的反馈和支持 Patrick!

  20. gunsnroses 2024年1月22日 下午6:40 #

    你好,
    希望您一切安好,
    我在这里 https://machinelearning.org.cn/long-short-term-memory-recurrent-neural-networks-mini-course/,to 了解STM/LTM的思路,但找不到教程:).

    几天前偶然看到一个页面,上面有(Python中的算法从零开始),但找不到那个页面:).

    我必须说,我非常感谢您,感谢您为使本网站真正有帮助所付出的所有努力。
    非常感谢。

  21. Aymes 2024年4月2日 早上4:50 #


    教程是否已被移除?
    对于每一课,我都能看到目标、问题和进一步阅读。每一课的实际信息材料在哪里?
    非常感谢!

  22. Sumia Akter 2025年7月10日 晚上11:07 #

    嗨,Jason!
    我在这里创建了一个堆叠LSTM的格式。对吗?

    model = Sequential()
    model.add(LSTM(units=128, input_shape=(train_x.shape[1], train_x.shape[2]), return_sequences=True))
    model.add(Dropout(0.2))
    model.add(LSTM(units=64, return_sequences=True))
    model.add(Dropout(0.2))
    model.add(LSTM(units=32, return_sequences=False))
    model.add(Dropout(0.2))
    model.add(Dense(units=1))
    model.compile(optimizer=’adam’, loss=’mean_squared_error’)

    • James Carmichael 2025年7月11日 早上4:36 #

      你好 Sumia…是的!看起来很棒!也请参阅我的电子邮件回复。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。