【问题标题】:How to prepare an array for an LSTM?如何为 LSTM 准备数组?
【发布时间】:2018-10-24 05:29:38
【问题描述】:

输入数组有 4 列:前 3 列是介于 -1 和 1 之间的实数,第 4 列是期望的输出,可以是 -1 或 0 或 +1(这是一个分类问题,-1 和 1表示有用的类别,0 表示样本不属于任何类别)。显然网络类型选择为 LSTM,因为类别不仅取决于前 3 列的值,还取决于前面样本的属性。

我会使用简单的非 LSTM 网络(但我不确定这是否正确,因为我对 Keras 完全陌生,并且将 Python 用于神经网络,我之前只在 Java 和 C# 中使用过 Encog而且它没有 LSTM)

# dataset = the array I've described above
x = dataset[:, 0:3]
y = dataset[:, 3]
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x, y, epochs=epochs, batch_size=10)

但是对于 LSTM,这会引发 ValueError,因为 LSTM 需要 3D 输入数组,而我不明白如何正确地重塑数组。

【问题讨论】:

  • 您需要从数据中提取(重叠)数据块,然后将它们提供给 LSTM 层。

标签: python tensorflow keras lstm


【解决方案1】:

如果您使用 Keras 并且可以访问 GPU,我建议您使用 CuDNNLSTM 而不是常规 LSTM 来加快训练速度。回到你的问题。

LSTM 需要 3D 输入,因此这里有一个快速示例来帮助您入门。假设您有以下两列表格数据:

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):

from numpy import array
data = array([
    [0.1, 1.0],
    [0.2, 0.9],
    [0.3, 0.8],
    [0.4, 0.7],
    [0.5, 0.6],
    [0.6, 0.5],
    [0.7, 0.4],
    [0.8, 0.3],
    [0.9, 0.2],
    [1.0, 0.1]])

为了将其重塑为 3D 输入,您需要执行以下操作:

data = data.reshape(1, 10, 2)

您将数据重塑为包含 10 个时间步长和 2 个特征的 1 个样本。

来源: https://machinelearningmastery.com/reshape-input-data-long-short-term-memory-networks-keras/

如果您需要更直接的答案,请告诉我。

【讨论】:

  • 谢谢。如果我的训练数据集有 1000 条记录,该怎么办?我应该将其重塑为 data.reshape(100, 10, 2) 吗?另外我应该如何重塑正确的响应数组呢?我不寻求预测任何输入,而是进行分类,例如如果在 [0.7, 0.4] 之后 [0.8, 0.3] 应该产生 1,如果在 [0.8, 0.3] 之后 [0.9, 0.2] 应该产生 -1 如果在 [0.9, 0.2] 之后 [1.0, 0.1] 应该产生 0 ].
  • 它说 ValueError: Input arrays should have the same number of samples as the target arrays.找到 100 个输入样本和 1000 个目标样本。
  • 如果我想要重叠样本怎么办?例如。给定这个数据集,我想要 [0.1, 1.0], [0.2, 0.9], [0.3, 0.8], 然后是 [0.2, 0.9], [0.3, 0.8], [0.4, 0.7], 然后是 [0.3, 0.8], [0.4, 0.7], [0.5, 0.6], 然后 [0.4, 0.7], [0.5, 0.6], [0.6, 0.5] 等 - 对于输入数据集的每个元素(第一个元素除外) I'我喜欢它自己 + 一些以前的东西。
猜你喜欢
  • 2021-06-14
  • 2019-02-03
  • 1970-01-01
  • 2019-07-07
  • 2016-07-05
  • 1970-01-01
  • 2022-01-14
  • 2021-12-20
  • 2021-03-24
相关资源
最近更新 更多