0


文科生也能理解的LSTM,图文并茂!


本文选自:👉 365天深度学习训练营

免费辅导

免费咨询


一句话介绍LSTM,它是RNN的进阶版,如果说RNN的最大限度是理解一句话,那么LSTM的最大限度则是理解一段话,详细介绍如下:

LSTM,全称为长短期记忆网络(Long Short Term Memory networks),是一种特殊的RNN,能够学习到长期依赖关系。1997提出,许多研究者进行了一系列的工作对其改进并使之发扬光大。LSTM在许多问题上效果非常好,现在被广泛使用。

所有的循环神经网络都有着重复的神经网络模块形成链的形式。在普通的RNN中,重复模块结构非常简单,其结构如下:

在这里插入图片描述

LSTM避免了长期依赖的问题。可以记住长期信息!LSTM内部有较为复杂的结构。能通过门控状态来选择调整传输的信息,记住需要长时间记忆的信息,忘记不重要的信息,其结构如下:

在这里插入图片描述
在这里插入图片描述

一、LSTM的数据处理流程

为了更好的理解LSTM输入数据的结构,我将时序数据(LSTM输入数据)以可视化的形式呈现。

根据输入的数据结构、预测输出,我们的程序可以大致分为以下六类:

二、关于代码实现

1. 单输入单输出(单输出时间步)

  • 输入:单个特征,多个时间步
  • 输出:单个特征,单个时间步

🥫 数据案例

训练集:
X                         y
[10,20,30,40,50][60][20,30,40,50,60][70][30,40,50,60,70][80]
…

预测输入:
X
[70,80,90,100,110]
期待输出:
y
[120]

🥠 TensorFlow2代码实现

model = Sequential()
model.add( LSTM(50,  activation='relu',  input_shape =(n_steps, n_features)))
model.add( Dense(1))
model.compile(optimizer='adam', loss='mse')

n_steps =5
n_features =1

在这里插入图片描述

2. 多输入单输出(单输出时间步)

  • 输入:多个特征,多个时间步
  • 输出:单个特征,单个时间步

🥫 数据案例

训练集:
X                       y
[[10,11],[20,21],[30,31],[40,41],[50,51]]60[[20,21],[30,31],[40,41],[50,51],[60,61]]70
…

预测输入:
X
[[30,31],[40,41],[50,51],[60,61],[70,71]]
期待输出:
y
80

🥠 TensorFlow2代码实现

model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(n_steps, n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')

n_steps =5# 此例中 n_features = 2,因为输入有两个并行序列
n_features = X.shape[2]

在这里插入图片描述

3. 多输入多输出(单输出时间步)

  • 输入:多个特征,多个时间步
  • 输出:多个特征,单个时间步

🥫 数据案例

训练集:
X                       y
[[10,11],[20,21],[30,31],[40,41],[50,51]][60,61][[20,21],[30,31],[40,41],[50,51],[60,61]][70,71]
…

预测输入:
X
[[30,31],[40,41],[50,51],[60,61],[70,71]]
期待输出:
y
[80,81]

🥠 TensorFlow2代码实现

model = Sequential()
model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_steps, n_features)))
model.add(Dense(n_features))
model.compile(optimizer='adam', loss='mse')

n_steps =5# 此例中 n_features = 2,因为输入有2个并行序列
n_features = X.shape[2]

在这里插入图片描述

4. 单输入单输出(多输出时间步)

在这里插入图片描述

  • 输入:单个特征,多个时间步
  • 输出:单个特征,多个时间步

🥫 数据案例

训练集:
X                       y
[10,20,30,40,50][60,70][20,30,40,50,60][70,80]
…

预测输入:
X
[30,40,50,60,70]
期待输出:
y
[80,90]

🥠 TensorFlow2代码实现

model = Sequential()
model.add(LSTM(100, activation='relu', return_sequences=True, input_shape=(n_steps, n_features)))
model.add(Dense(n_steps_out))
model.compile(optimizer='adam', loss='mse')

n_steps =5
n_steps_out =2
n_features =1

在这里插入图片描述

多输入单输出(多输出时间步)与多输入多输出(多输出时间步)同理,这里就不赘述了

参考文章

标签: lstm rnn 深度学习

本文转载自: https://blog.csdn.net/qq_38251616/article/details/125613533
版权归原作者 K同学啊 所有, 如有侵权,请联系我们删除。

“文科生也能理解的LSTM,图文并茂!”的评论:

还没有评论