当我将lstm作为多维数组提供时会发生什么?

时间:2018-05-03 21:04:27

标签: python tensorflow keras lstm

我像tensorflow一样创建lstm模型

model.add(LSTM(6, input_shape=(1, 6), return_sequences=True))
model.add(LSTM(3))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam' )
model.fit(X_train_t, y_train, epochs=200, batch_size=3, verbose=1)

X_train_t的值是

[[ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]
 [ 0.          0.46412556  0.24775785  0.20179372  0.23430493  0.16704036]
 [ 0.15022422  0.          0.46412556  0.24775785  0.20179372  0.23430493]
 [ 0.2690583   0.15022422  0.          0.46412556  0.24775785  0.20179372]
 [ 0.2690583   0.2690583   0.15022422  0.          0.46412556  0.24775785]
 [ 0.24775785  0.2690583   0.2690583   0.15022422  0.          0.46412556]
 [ 0.21076233  0.24775785  0.2690583   0.2690583   0.15022422  0.        ]
...

它没有错误,但我不明白。 LSTM获取输入是一个节点中的时间序列和循环。

enter image description here

为什么我放多维数组时没有错误我认为正确的输入应该是这样的。如何获得输入?

[[ 0.24215247]
 [ 0.16704036]
 [ 0.23430493]
...

1 个答案:

答案 0 :(得分:1)

LSTM用作输入向量,而不是数字。您指定为输入形状:

input_shape=(1, 6)

所以6-dim向量,这正是你在每个时间步骤中所用的东西:

[ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]

因此,具有3个时间步长的输入序列将如下所示:

[[ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]
 [ 0.          0.46412556  0.24775785  0.20179372  0.23430493  0.16704036]
 [ 0.15022422  0.          0.46412556  0.24775785  0.20179372  0.23430493]]

(每6个维度有3个向量)