ValueError: Ошибка при проверке цели: ожидалось, что плотность_3 будет иметь форму (Нет, 6), но получен массив с формой (6, 1) - PullRequest
0 голосов
/ 13 марта 2019

Я тренирую классификационную сеть с данными обучения, которые имеют X.shape = (1119, 7) и Y.shape = (1119, 6). Ниже моя простая сеть Keras с выходным диммером 6 (размер меток). Ошибка, которая возвращается ниже кода

hidden_size = 128
model = Sequential()
model.add(Embedding(7, hidden_size))
#model.add(LSTM(128, input_shape=(1,7)))
model.add(LSTM(hidden_size, return_sequences=True))
model.add(LSTM(hidden_size, return_sequences=True))
model.add(Dense(output_dim=6, activation='softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', 
              optimizer='adam', 
              metrics=["categorical_accuracy"])

ValueError: Error when checking target: expected dense_13 to have shape (None, 6) but got array with shape (6, 1)

Я бы предпочел не делать этого в тензорном потоке, потому что я просто создаю прототипы, но это мой первый запуск в Керасе и я не понимаю, почему он не может получить эти данные. Я пытался изменить данные несколькими способами, но ничего не получалось. Любой совет, почему это не работает, будет принята с благодарностью.

1 Ответ

1 голос
/ 13 марта 2019

Вам, вероятно, следует удалить параметр return_sequences=True из вашего последнего слоя LSTM.При использовании return_sequences=True вывод слоя LSTM имеет форму (seq_len, hidden_size).Передача этого на плотный слой дает выходную форму (seq_len, 6), которая несовместима с вашими метками.Если вместо этого вы пропустите return_sequences=True, то ваш слой LSTM вернет форму (hidden_size,) (он возвращает только последний элемент последовательности), и впоследствии ваш последний плотный слой будет иметь выходную форму (6,), как ваши метки.

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