LSTM输入形状和输出

时间:2019-07-09 12:57:38

标签: python keras lstm

我是这个领域的新手。我尝试使用两个输入:价格和情绪来预测下一个小时的价格。搜索后,我发现有一个教程,这是def:

import keras
def buildModel(dataLength, labelLength):
    price = Input(shape = (dataLength,1),name='price')
    sentiment = Input(shape=(dataLength,1),name='sentiment')

    priceLayers = LSTM(64, return_sequences=False)(price)
    sentimentLayers = LSTM(64, return_sequences=False)(sentiment)

    output = keras.layers.concatenate(
        [
            priceLayers,
            sentimentLayers,
        ]
    )
    output = Dense(labelLength, activation='linear',name='output')(output)

    model = Model(
        inputs = [
            price,
            sentiment
        ],
        outputs=[
            output
        ]
    )
    model.compile(optimizer='rmsprop',loss='mse')
    return model

我的两个输入的形状是: trainX = (1, 22234, 51) trainS = (1, 22285, 1)

我执行def:

lstm = buildModel(22234,1)
lstm.fit([trainX,trainS],[trainX],validation_data=(
        [testX,testS],
        [testX]),epochs = 10
)

但是我得到Error when checking input: expected price to have shape (22234, 1) but got array with shape (22234, 51)

实际上,我对形状非常困惑,所以我的问题是:

  1. 我该如何解决错误
  2. 对于我的trainX和trainS,它们的形状是初始(22234,51)和(22285,1),但是由于输入必须是3D,所以我发现一个教程说input_shape是(2,10)->( batch_size,2、10)。因此,我以批量大小= 1将输入重塑为(1,22234,51)和(1,22285,1)。在此步骤中,我正确吗?以及我应该如何确定批量大小?

3。 在lstm.fit中,我不知道应该输入什么输出,因此我标记为粗体的地方正确吗?

 lstm.fit([trainX,trainS],**[trainX]**,validation_data=(
            [testX,testS],
            **[testX]**),epochs = 10
    )

0 个答案:

没有答案