我想知道如何在Keras中使用批量归一化(BN)来实现双向LSTM。我知道BN层应该位于线性层和非线性层即激活层之间。这对于CNN或Dense层很容易实现,但是如何在双向LSTM中实现呢?
提前感谢。
我想知道如何在Keras中使用批量归一化(BN)来实现双向LSTM。我知道BN层应该位于线性层和非线性层即激活层之间。这对于CNN或Dense层很容易实现,但是如何在双向LSTM中实现呢?
提前感谢。
如果你想在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应用于输出。
如果您想将BatchNormalization应用于LSTM内部流之一(例如循环流),那么恐怕Keras中尚未实现此功能。