了解LSTM-所需的数据尺寸

时间:2019-02-27 11:03:55

标签: python keras lstm recurrent-neural-network

在理解LSTM自动编码器的背景下,我们馈送LSTM层的尺寸之间的差异时,我遇到了问题。

LSTM需要三个维度(x,y,z)。 我有一个总共2900个数据点(行)的时间序列数据集,从概念上讲,将以23个连续的数据点(行)为一组进行分析/训练,每行有178个特征/列。 这是因为我每23行就有一个关于新病人的序列。

这样说是否正确?

  • x(样本)=我拥有的长度为23的序列的束数。即:len(dataframe)/23
  • y(TIMESTEPS)=序列的长度。根据域假设,为23。
  • z(FEATURE_SIZE)=我的行的要素大小。以我为例178。

因此:x*y = rows of my dataset

鉴于此,假设一切都正确,那么批量大小的概念是什么? 正确地说,这是一个时代考虑的样本数吗?因此,如果我的x(样本)为200,则使用不大于200的batch_size是没有意义的,因为这是我的上限。

1 个答案:

答案 0 :(得分:1)

我将您的描述解释为说您的总数据集包含2900个数据样本。每个数据样本都有23个时隙,每个时隙的向量均为178维。

如果是这种情况,则模型的input_shape应定义为(23,178)。批次大小很简单,即用于训练/测试/预测运行的样本数量(在2900个样本中)。

尝试以下操作:

from keras.models import Sequential
from keras.layers import Dense, LSTM


model = Sequential()
model.add(LSTM(64, input_shape=(23,178)))
model.compile(loss='mse', optimizer='sgd')
model.summary()

print model.input

这只是一个简化模型,为每个样本输出单个64宽矢量。您将看到预期的model.input为:

Tensor("lstm_3_input:0", shape=(?, 23, 178), dtype=float32)

在输入形状中未设置batch_size,这意味着该模型可用于训练/预测不同大小的批次。