Я пытался реализовать последовательность для изучения последовательности задач в Керасе.Я хочу, чтобы модель выучила следующую трансформацию.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)
Может ли кто-нибудь мне помочьэтот?