Несовместимый ввод в слой LSTM в TF.Keras - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь запустить LSTM для некоторых встроенных текстовых данных.

У меня есть входные данные (training_set_size, paragraph_length, embedding_dimension)

Вывод представляет собой вектор целых чисел от 0 до 31, представляющий одну из 32 возможных меток, каждое слово помечается. Это имеет форму (training_set_size, paragraph_length, 1)

До того, как я добавил встраивание, это работало с несколькими небольшими изменениями. Тогда форма моих входных данных была (training_set_size, paragraph_length, 1), а input_shape для слоя LSTM была (paragraph_length, 1)

Моя проблема в том, что я получаю одну из двух ошибок, и решение одной, кажется, вызывает другую.

Вот мой код:

model = tf.keras.models.Sequential([
    tf.keras.layers.LSTM(128, input_shape = (input_len, embedding_dim), return_sequences=True),
    tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(32))
])

model.compile('adam', 'sparse_categorical_crossentropy', metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

Приведенный выше код выдает следующую ошибку:

ValueError: Ошибка при проверке ввода: ожидалось, что lstm_input будет иметь 3 измерения, но получит массив с формой (1000, 100)


Итак, я попытался изменить форму ввода LSTM:

input_shape = (input_len, embedding_dim, 1)

Вместо этого выдается следующая ошибка:

Вход 0 слоя lstm_8 несовместим со слоем: ожидаемый ndim = 3, найденный ndim = 4. Получена полная форма: [Нет, 1000, 100, 1]

РЕДАКТИРОВАТЬ: training_set_size=17744, paragraph_length=1000 и embedding_dim=100

...