Есть некоторые вещи, которые вы можете попробовать ускорить:
1.Используйте CUDNN-версию LSTM
Обычно это быстрее, проверьте доступные слои здесь keras.layers.CuDNNLSTM
- это то, что вам нужно.
2.Используйте Conv1d
для создания элементов
Вы можете использовать одномерную свертку с kernel_size
, указывающим, сколько слов следует учитывать, и stride
, определяющим скачок движущегося окна.Для kernel_size=3
и stride=3
, padding="SAME"
это уменьшит вашу размерность в три раза.
Вы можете сложить больше сверточных слоев.
Кроме того, вы все равно можете использовать LSTM
нормально.
3.Отбросьте LSTM в целом
Вы можете пойти с 1d свертками и объединением для классификации, RNN не единственный способ.
С другой стороны: вы не столкнетесь с исчезающими градиентами (может быть немного смягченоДвунаправленный LSTM).
С другой стороны: вы потеряете строгую зависимость между словами, хотя это не должно быть большой проблемой для двоичной классификации (я полагаю, это ваша цель).