web-dev-qa-db-ja.com

Kerasでのバッチ正規化を使用した双方向LSTM

KerasでBatchNormalization(BN)を使用してbiLSTMを実装する方法を考えていました。 BN層は線形性と非線形性、つまり活性化の間にあるべきだと私は知っています。これは、CNNまたは高密度レイヤーで簡単に実装できます。しかし、biLSTMでこれを行う方法は?

前もって感謝します。

10
abolfazl

LSTMの線形出力にBatchNormalizationを適用する場合は、次のように実行できます。

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をアウトパスに適用します。

繰り返しフローなど、LSTMの内部フローの1つにBatchNormalizationを適用したい場合は、この機能がKerasに実装されていないのではないかと思います。

7
albarji