代码之家  ›  专栏  ›  技术社区  ›  Sadeq Al-Ahdal

为什么预测长度是该LSTM kears模型预期长度的两倍?

  •  0
  • Sadeq Al-Ahdal  · 技术社区  · 1 年前

    我正在研究一个多变量时间序列预测问题,其中我有2个特征和15个时间步长,我想预测一两个未来值。我的数据集形状如下:

    Training Shape: (2063, 15, 2) (2063, 1)
    Testing Shape: (259, 15, 2) (259, 1)
    Prediction Shape: (65, 15, 2) (65, 1)
    

    我有以下LSTM模型:

    def mylstm(structure , data):
        inputs = Input(shape=(data["X_train"].shape[1],data["X_train"].shape[2]))
        lstm_1 = LSTM(structure["n_hidden_units"], return_sequences=True,
                      activation=structure["activation"],
                      kernel_initializer=structure["network_weight_initial"])(inputs)
        lstm_out=LSTM(structure["n_hidden_units"])(lstm_1)
        outputs = Dense(1)(lstm_out)
        model = Model(inputs=inputs, outputs=outputs)
        model.summary()
        return model
    
    optimizer = getattr(optimizers, structure["opt"])(learning_rate=structure["learning_rate"])
    model.compile(optimizer=optimizer, loss='mse')
    history = model.fit(
            data["X_train"], data["y_train"], epochs=structure["epoch"], 
            batch_size=structure["batch_size"], verbose=2,
            validation_data=(X_valid, y_valid), shuffle=False, 
            )
    

    训练模型并调用预测函数后,如下所示

    y_pred = model.predict(data["X_test"])
    

    我收到错误消息:

    ValueError: y_true and y_pred must have the same number of dimensions.
    

    那是因为 y_pred 长度为1820 (65*14*2) 。我不明白为什么它考虑了批量大小,我应该得到 65*2 尺寸,但它给出 1820*1 .

    0 回复  |  直到 1 年前