Я новичок в этой области. Я пытаюсь использовать два входа: цену и настроение, чтобы предсказать цену следующего часа. После поиска я обнаружил, что есть учебник, и вот определение:
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)
На самом деле, я очень смущен формой, поэтому мои вопросы:
- Как я могу исправить ошибку
- Для моих 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
)