Я пытаюсь запустить 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