Я пытаюсь обучить LSTM-RNN с 64 скрытыми единицами. Мои данные следующие:
ввод: пустой массив с размерами (170000, 50, 500) -> (примеры, временные шаги, количество функций)
выход: пустой массив с размерами (170000 , 10)
Выход представляет собой категориальную переменную с 10 классами (например, класс 1 соответствует вектору [1,0,0,0,0,0,0,0,0,0])
До сих пор я пробовал этот код, но появляется ошибка о том, что плотный слой должен иметь 3D-ввод.
model = Sequential()
model.add(LSTM(64, input_shape=(50, 500), return_sequences=True,dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(units = 10,activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
model.fit(input, output, epochs=1, batch_size=64)
Единственное, что, кажется, работает, — это изменение вывода, чтобы он имел следующую форму: (170000,50,10), в которой практически все нули, кроме 50-го временного шага.
Это правильный подход? Если да, то есть ли что-то более эффективное? Меня беспокоит тот факт, что расширение формы выходных данных может сделать код менее эффективным.