Как исправить: ValueError: Вход 0 несовместим со слоем lstm_2: ожидается ndim = 3, найдено ndim = 2 - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть вопрос относительно данных временных рядов. Мой обучающий набор данных имеет размер (3183, 1, 6)

Моя модель:

model = Sequential()
model.add(LSTM(100, input_shape = (training_input_data.shape[1], training_input_data.shape[2])))
model.add(Dropout(0.2))
model.add(LSTM(100, input_shape = (training_input_data.shape[1], training_input_data.shape[2])))
model.add(Dense(1))
model.compile(optimizer = 'adam', loss='mse')

Я получаю следующую ошибку на втором слое LSTM:

ValueError: вход 0 несовместим со слоем lstm_2: ожидаемый ndim = 3, найденный ndim = 2, но параметр ndim отсутствует.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Вам необходимо установить параметр return_sequence = True для укладки слоев LSTM.

model = Sequential()
model.add(LSTM(
    100,
    input_shape = (training_input_data.shape[1], training_input_data.shape[2]),
    return_sequences=True
))
model.add(Dropout(0.2))
model.add(LSTM(100, input_shape = (training_input_data.shape[1], training_input_data.shape[2])))
model.add(Dense(1))
model.compile(optimizer = 'adam', loss='mse')

См. Также Как составлять несколько lstm в кератах?

0 голосов
/ 30 сентября 2019

Проблема в том, что первый слой LSTM возвращает что-то с формой (batch_size, 100). Если вы хотите выполнить итерацию со вторым слоем LSTM, вам, вероятно, следует добавить опцию return_sequences=True в первом слое LSTM (которая затем возвращает объект формы (batch_size, training_input_data.shape[1], 100).

. Обратите внимание, что при передаче input_shape = (..)во 2-м LSTM не является обязательным, поскольку входная форма этого слоя автоматически вычисляется на основе выходной формы первого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...