Output_shape 的 lstm 模型
Output_shape of lstm model
我的测试数据有1025643条,72条features/attributes。我已经使用形状为 (245, 30, 72) 的输入数据 trainX 和形状为 (245, ) 的 trainY 训练了一个 lstm。另请注意,我已将回溯指定为 30 步后退,因此 trainX 的形状为 (245, 30, 72)。
训练模型后,如果我这样做
model.output_shape
输出为:
(None, 1)
我的理解是它会对测试集给出一步预测。但我希望它是 30 行预测,一个用于每个未来步骤,一个用于测试集中的每一行(就像我的情况下输出的形状应该是 (1025643, 30, 1))。我需要对数据形状进行哪些更改?我正在使用带有 tensorflow 后端和 python 3.6.
的 keras lstm
我的模型代码是:
model = Sequential()
model.add(LSTM(100, return_sequences=True, input_shape = (trainX.shape[1], trainX.shape[2])))
model.add(LSTM(100, return_sequences = False))
model.add(Dense(1, activation='linear'))
model.compile(loss='mse', optimizer='adam')
model.fit(trainX, trainY, epochs=50, shuffle=False, verbose=1)
最后一个 LSTM 层的 return_sequences=False
参数导致 LSTM 在所有 30 个时间步后仅 return 输出。如果您想要 30 个输出(每个时间步后一个),请在最后一个 LSTM 层上使用 return_sequences=True
,这将导致输出形状为 (None, 30, 1)
.
有关 Keras 中 LSTM 的更详细说明,请参阅 here。
我的测试数据有1025643条,72条features/attributes。我已经使用形状为 (245, 30, 72) 的输入数据 trainX 和形状为 (245, ) 的 trainY 训练了一个 lstm。另请注意,我已将回溯指定为 30 步后退,因此 trainX 的形状为 (245, 30, 72)。
训练模型后,如果我这样做
model.output_shape
输出为:
(None, 1)
我的理解是它会对测试集给出一步预测。但我希望它是 30 行预测,一个用于每个未来步骤,一个用于测试集中的每一行(就像我的情况下输出的形状应该是 (1025643, 30, 1))。我需要对数据形状进行哪些更改?我正在使用带有 tensorflow 后端和 python 3.6.
的 keras lstm我的模型代码是:
model = Sequential()
model.add(LSTM(100, return_sequences=True, input_shape = (trainX.shape[1], trainX.shape[2])))
model.add(LSTM(100, return_sequences = False))
model.add(Dense(1, activation='linear'))
model.compile(loss='mse', optimizer='adam')
model.fit(trainX, trainY, epochs=50, shuffle=False, verbose=1)
最后一个 LSTM 层的 return_sequences=False
参数导致 LSTM 在所有 30 个时间步后仅 return 输出。如果您想要 30 个输出(每个时间步后一个),请在最后一个 LSTM 层上使用 return_sequences=True
,这将导致输出形状为 (None, 30, 1)
.
有关 Keras 中 LSTM 的更详细说明,请参阅 here。