Как получить один выход за несколько шагов в Keras LSTM? - PullRequest
0 голосов
/ 08 июля 2019

Я хочу классифицировать временные рамки данных.Так, например, каждые 5 входов есть один выход.Но мой код отказывается принять мой вывод.

model = Sequential()
model.add(GRU(32, input_shape=(TimeStep.TIME_STEP + 1, 10), return_sequences=True, activation='relu'))
model.add(GRU(64, activation='relu', return_sequences=True))
model.add(Dense(2, activation='hard_sigmoid'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=[categorical_accuracy])
history = model.fit(TimeStep.fodder, TimeStep.target, epochs=50)

Ошибка:

ValueError: Error when checking target: expected dense_1 to have shape (5, 2) but got array with shape (31057, 2)

У него есть точка данных 31057, что каждая точка данных состоит из 5 последовательных данных.

1 Ответ

0 голосов
/ 08 июля 2019

Параметр return_sequences в слое GRU указывает модели возвращать состояние на каждом временном шаге, а не при окончательной активации.

Если вы установите этот флаг в False во втором GRU, ваша модель будетвернуть форму, которую вы ожидаете.Совет: используйте model.summary() для отображения форм вывода ваших слоев.

Для модели с категориальной потерей вы хотите, чтобы активация выходного слоя была softmax, а не сигмоидом.

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