Ошибка при проверке цели: ожидалось, что time_distributed_56 будет иметь 3 измерения, но получит массив с формой (1000, 1) - PullRequest
0 голосов
/ 16 мая 2019

Я работаю с Keras, пытаюсь добавить слой Embedding до слоев LSTM. Поэтому мои входные данные больше не являются однозначным представлением и содержат только индексы экземпляров. Вот код:

n_chars = 97
n_in_seq_length = 9
n_out_seq_length = 1
n_batch = 256
n_epoch = 15

model = Sequential()
model.add(Embedding(n_chars, 200, input_length=n_in_seq_length))
model.add(LSTM(200, return_sequences=True))
model.add(LSTM(200, return_sequences=True))
model.add(TimeDistributed(Dense(n_chars, activation='softmax')))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['categorical_accuracy'])

X, y = np.random.randint(1, 97, (1000,9)), np.random.randint(1, 97, (1000,1))

model.fit(X, y, epochs=n_epoch, batch_size=n_batch)

А вот и сообщение об ошибке:

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

Я пробовал различные решения, такие как добавление слоя RepeatVector, ни одно из которых не работает. Стоит также отметить, что у меня есть тот же код без слоя Embedding (передача горячего представления в LSTM), который отлично работает.

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