Ошибка при проверке ввода: ожидалось, что lstm_1_input будет иметь форму (71, 768), но получил массив с формой (72, 768) - PullRequest
0 голосов
/ 07 апреля 2020

Я загружаю предварительно обученную модель с формой ((23094, 71, 768), (23094, 19, 282)) .

Когда я передаю свой новый X значения с формой (29116, 72, 768) показывает ошибку при проверке ввода: ожидалось, что lstm_1_input будет иметь форму (71, 768), но получил массив с формой (72, 768).

Это резюме моей модели: Модель: "sequential_1"


Слой (тип) Выходной параметр Параметр #

lstm_1 (LSTM) (Нет, 71, 256) 1049600


lstm_2 (LSTM) (нет, 71, 64) 82176


lstm_3 (LSTM) (нет, 32) 12416


плотность_1 (плотный) (Нет, 5358) 176814


reshape_1 (Reshape) (Нет, 19, 282) 0


активации_1 (Активация) (Нет, 19, 282) 0

Всего параметров: 1 311 006 Обучаемых параметров: 1 321 006 Необучаемых параметров: 0


1 Ответ

0 голосов
/ 07 апреля 2020

LSTM требуется трехмерный массив (размер пакета, временные шаги, функции). Есть много способов тренироваться с переменной временной длиной (размерность = 1, в вашем случае 71).

В вашем случае размер выборки = 23094, 23094 (это не обязательно должно совпадать)

временное измерение = 71! = 19 (это может отличаться, если у вас переменная длина входного сигнала и в одном пакете все входы имеют одинаковую длину, но в сводке модели временное измерение установлено на 71, а не на None, поэтому вы должны тренироваться с 71 временным измерением)

измерение функции = 768! = 282 (это должно быть то же самое)

Просто используйте дополнение нулями, чтобы соответствовать форме https://www.tensorflow.org/api_docs/python/tf/keras/layers/ZeroPadding2D

Кроме того, предоставьте полный код, чтобы получить основанный на коде ответ.

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