Я пытался получить векторное представление последовательности векторов, используя автокодер LSTM, чтобы я мог классифицировать последовательность, используя SVM или другие подобные контролируемые алгоритмы.Объем данных не позволяет мне использовать полностью связанный плотный слой для классификации.
Самый короткий размер моего ввода - 7 временных шагов, а самая длинная последовательность - 356 временных шагов.Соответственно, я дополнил более короткие последовательности нулями, чтобы получить окончательный x_train формы (1326, 356, 8), где 1326 - количество обучающих выборок, а 8 - размерность одного временного шага.Я пытаюсь закодировать эти последовательности в один вектор, используя заданный автоэнкодер LSTM.
model.add(Masking(mask_value=0.0, input_shape=(max_len, 8)))
model.add(LSTM(100, activation='relu'))
model.add(RepeatVector(max_len))
model.add(LSTM(8, activation='relu', return_sequences=True))
model.compile(optimizer='adam', loss='mse')
model.fit(x_train, x_train, batch_size=32, callbacks=[chk], epochs=1000, validation_split=0.05, shuffle=True)
Я пытаюсь замаскировать заполненные нулями результаты, но слой RepeatVector () может препятствовать процессу.Следовательно, через некоторое время среднеквадратическая потеря ошибки становится равной nan
.Может ли кто-нибудь помочь мне с тем, как я могу включить только соответствующий временной шаг в расчет функции потерь и игнорировать другие временные шаги?