Последовательность к последовательности обучения с Keras - PullRequest
0 голосов
/ 21 мая 2018

Я пытался реализовать последовательность для изучения последовательности задач в Керасе.Я хочу, чтобы модель выучила следующую трансформацию.F (X) -> Y Где X -

  [[0., 0., 1., 0., 1., 1., 0., 0., 0., 0.],
   [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
   [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
   [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
   [0., 1., 0., 1., 0., 0., 0., 0., 0., 0.],
   [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
   [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
   [1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
   [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
   [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.]]

, а Y задается как

  [[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
   [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
   [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
   [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
   [0., 1., 0., 1., 0., 0., 0., 0., 0., 0.]]

Каждый столбец в Xи массив Y представляет слово в предложении.Тем не менее, каждое слово имеет десять признаков во входной последовательности (то есть X) и только пять признаков в Y. Я попытался реализовать модель со следующим кодом.

model = Sequential()
LAYER_NUM = 3
HIDDEN_DIM = 900
model = Sequential()
model.add(Bidirectional(LSTM(HIDDEN_DIM, return_sequences=True), input_shape = (None, 10)))
print("YEAH!")
for i in range(LAYER_NUM - 1):
    model.add(Bidirectional(LSTM(HIDDEN_DIM, return_sequences=True)))
    model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(5)))
model.add(Activation('softmax'))
model.compile(loss="categorical_crossentropy", optimizer="rmsprop", metrics=["accuracy"])

Однако возникла следующая ошибка.

ValueError: Ошибка при проверке цели: ожидается, что активация_3 будет иметь форму (10, 5), но получила массив с формой (5, 10)

Может ли кто-нибудь мне помочьэтот?

1 Ответ

0 голосов
/ 21 мая 2018

Ошибка выдает это.Вы сказали, что столбцы представляют слова, в имеющейся у вас модели Keras это будет строк .Таким образом, вы должны транспонировать ваши данные X.T и Y.T, чтобы исправить это.

...