LSTM вводит форму и вывод - PullRequest
0 голосов
/ 09 июля 2019

Я новичок в этой области. Я пытаюсь использовать два входа: цену и настроение, чтобы предсказать цену следующего часа. После поиска я обнаружил, что есть учебник, и вот определение:

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), но поскольку входные данные должны быть трехмерными, и я обнаружил, что учебник говорит, что input_shape равен (2,10) -> ( batch_size, 2, 10). Поэтому я изменяю свои входные данные в (1,22234, 51) и (1,22285, 1) как размер партии = 1. На этом шаге я прав? И как мне определить размер партии?

3. В lstm.fit я понятия не имею, какой вывод я должен поставить, так ли правильно отмечен жирный шрифт?

 lstm.fit([trainX,trainS],**[trainX]**,validation_data=(
            [testX,testS],
            **[testX]**),epochs = 10
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...