永发信息网

如何为LSTM重新构建输入数据

答案:1  悬赏:0  手机版
解决时间 2021-11-13 07:49
  • 提问者网友:皆是孤独
  • 2021-11-12 11:16
如何为LSTM重新构建输入数据
最佳答案
  • 五星知识达人网友:玩家
  • 2021-11-12 12:05
教程概述
本文分为4部分:
1. LSTM输入层。
2. 具有单输入样本的LSTM示例。
3. 具有多个输入特征的LSTM示例。
4. LSTM输入提示。
2
LSTM输入层
LSTM输入层是由神经网络第一个隐藏层上的“input_shape”参数指定的。这可能会让初学者感到困惑。例如,以下是具有一个隐藏的LSTM层和一个密集输出层组成的神经网络示例。

3
在这个例子中,我们可以看到LSTM()层必须指定输入的形状。而且每个LSTM层的输入必须是三维的。这输入的三个维度是:
样品。一个序列是一个样本。批次由一个或多个样本组成。
时间步。一个时间步代表样本中的一个观察点。
特征。一个特征是在一个时间步长的观察得到的。
这意味着输入层在拟合模型时以及在做出预测时,对数据的要求必须是3D数组,即使数组的特定维度仅包含单个值。
当定义LSTM网络的输入层时,网络假设你有一个或多个样本,并会给你指定时间步长和特征数量。你可以通过修改“ input_shape ”的参数修改时间步长和特征数量。例如,下面的模型定义了包含一个或多个样本,50个时间步长和2个特征的输入层。

具有单输入样本的LSTM示例
考虑到你可能会有多个时间步骤和一个特征序列的情况,所以我们先从这种情况讲起。例如,这是一个包含10个数字的序列:
0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
我们可以将这个数字序列定义为NumPy数组。

然后,我们可以使用NumPy数组中的reshape()函数将这个一维数组重构为三维数组,每个时间步长为1个样本,那么我们需要10个时间步长和1个特征。
在数组上调用的reshape()函数需要一个参数,它是定义数组新形状的元组。我们不能干涉数据的重塑,重塑必须均匀地重组数组中的数据。

一旦重塑,我们可以打印阵列的新形状。

完整的例子如下:

运行示例打印单个样本的新3D形状:

该数据现在可以为input_shape(10,1)的LSTM的输入(X)。

具有多个输入功能的LSTM示例
你的模型可能有多个并行数据作为输入的情况,接下来我们来看看这种情况。
例如,这可以是两个并行的10个值:
series 1: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
series 2: 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1
我们可以将这些数据定义为具有10行的2列的矩阵:

该数据可以被设置为1个样本,具有10个时间步长和2个特征。
它可以重新整形为3D阵列,如下所示:

完整的例子如下:

运行示例打印单个样本的新3D形状。
(1, 10, 2)
该数据现在可以为input_shape(10,2)作为LSTM的输入(X)使用。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯