Как я могу решить ошибку измерения LSTM в Керасе? - PullRequest
0 голосов
/ 29 мая 2019

Вот мой код

model = Sequential()
model.add(LSTM(512,  return_sequences=True))
model.add(Dropout(0.3))

model.add(LSTM(512,  return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(1, return_sequences=True))

Я получил эту ошибку

ValueError: Error when checking target: expected lstm_3 to have 3 dimensions, but got array with shape (62796, 1) 

если я установил return_sequences=True, тогда выходная форма будет 3D-массивом

Итак, почемуэта ошибка возникает ??

1 Ответ

1 голос
/ 29 мая 2019

Вход и выход слоя keras LSTM должны быть 3-мерными, и по умолчанию следует форме

(пакетный размер, временные шаги, функции).

Похоже, что вы используете только два измерения (62796, 1) из сообщения об ошибке.

Ниже приведен минимальный рабочий пример с синтетическими данными, которые иллюстрируют форму ввода и вывода, требуемую вашей сетью LSTM.

from keras.models import Sequential
from keras.layers import LSTM, Dropout
import numpy as np

numb_outputs = 1

batch_size = 10
timesteps = 5
features = 2

x_single_batch = np.random.rand(batch_size, timesteps, features)
y_single_batch = np.random.rand(batch_size, timesteps, numb_outputs)

model = Sequential()
model.add(LSTM(512,  return_sequences=True))
model.add(Dropout(0.3))

model.add(LSTM(512,  return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(numb_outputs, return_sequences=True))

model.compile(optimizer='adam',loss='mse')
model.fit(x= x_single_batch, y=y_single_batch)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...