我像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获取输入是一个节点中的时间序列和循环。
为什么我放多维数组时没有错误我认为正确的输入应该是这样的。如何获得输入?
[[ 0.24215247]
[ 0.16704036]
[ 0.23430493]
...
答案 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个向量)