keras - 如何设置 Keras LSTM 进行时间序列预测?

标签 keras lstm

我有一个包含 600 个连续点 (x(t), y(t)) 的单个训练批处理,其中 x(t) 是一个 25 维向量,y(t) 是我的目标 (1 dim)。我想训练一个 LSTM 来预测在给定一些额外的 x(t) [t> 600] 的情况下该系列将如何继续。我尝试了以下模型:

    model = Sequential() 
    model.add(LSTM(128, input_shape = (600,25), batch_size = 1, activation= 'tanh', return_sequences = True)) 
    model.add(Dense(1, activation='linear'))
    model.compile(loss='mean_squared_error', optimizer='adam')
    model.fit(trainX, trainY, epochs=20 ,verbose=2) prediction

    prediction = model.predict(testX, batch_size = 1)

拟合工作正常,但我在预测步骤中不断收到以下错误:

    Error when checking : expected lstm_46_input to have shape (1, 600, 25) but got array with shape (1, 10, 25)

我错过了什么?

这是我的形状:

    trainX.shape = (1,600,25)
    trainY.shape = (1,600,1)
    testX.shape = (1,10,25)

最佳答案

根据 Keras 文档,LSTM(或任何 RNN)层的输入应为 (batch_size, timesteps, input_dim) 您的输入形状为

trainX.shape = (1,600,25)

因此,这意味着对于训练,您仅传递一个具有 600 个时间步长和每个时间步长 25 个特征的数据。但我感觉你实际上有 600 个训练数据,每个训练数据都有 25 个时间步每个时间步 1 个特征。我猜你的输入形状 (trainX) 应该是 600 x 25 x 1。训练目标 (trainY) 应该是 600 x 1 如果我的假设是正确的,那么您的测试数据应该是 10 x 25 x 1 的形状。第一个 LSTM 层应该写成

    model.add(LSTM(128, input_shape = (25,1), batch_size = 1, activation= 'tanh', return_sequences = False)) 

关于keras - 如何设置 Keras LSTM 进行时间序列预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44790846/

相关文章:

python - TypeError : Tensors in list passed to 'values' of 'ConcatV2' Op have types [bool, float32] 不完全匹配

tensorflow - 堆叠 LSTM 的初始状态结构

python - Keras-嵌入层

tensorflow - 使用 ResNet50 进行二元分类的恒定验证准确性

tensorflow - Keras - fit_generator 中的 class_weight 与 sample_weights

python - 使用 Keras 进行时间序列预测 - 模型值错误

tensorflow - 使用 LSTM 的词嵌入防止文本分类过度拟合

python - 尝试在 TensorFlow 中使用 BasicLSTMCell 和dynamic_rnn 设置网络时出现 ValueError

python - 使用 conv1D “Error when checking input: expected conv1d_input to have 3 dimensions, but got array with shape (213412, 36)”

tensorflow - 二元和多类分类代码更改