Двунаправленный LSTM C пакетной нормализацией в Keras

Мне было интересно, как реализовать biLSTM с пакетной нормализацией (BN) в Keras. Я знаю, что слой BN должен находиться между линейностью и нелинейностью, то есть активацией. Это легко реализовать с помощью CNN или плотных слоев. Но как это сделать с biLSTM?

спасибо заранее.

1 ответов


Если вы хотите применить BatchNormalization над линейными выходами LSTM, вы можете сделать это как

from keras.models import Sequential
from keras.layers.recurrent import LSTM
from keras.layers.wrappers import Bidirectional
from keras.layers.normalization import BatchNormalization

model = Sequential()
model.add(Bidirectional(LSTM(128, activation=None), input_shape=(256,10)))
model.add(BatchNormalization())

по существу, вы удаляете нелинейные активации LSTM (но не активации ворот), а затем применяете BatchNormalization к outpus.

Если вы хотите применить BatchNormalization в один из внутренних потоков LSTM, таких как рекуррентные потоки, я боюсь, что эта функция не была реализована в Keras.