小编典典

我在哪里调用 Keras 中的 BatchNormalization 函数?

all

如果我想在 Keras 中使用 BatchNormalization 函数,那我只需要在开始时调用一次吗?

我为此阅读了此文档:http:
//keras.io/layers/normalization/

我不知道我应该在哪里称呼它。下面是我尝试使用它的代码:

model = Sequential()
keras.layers.normalization.BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None)
model.add(Dense(64, input_dim=14, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(2, init='uniform'))
model.add(Activation('softmax'))

sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2)

我问是因为如果我使用包括批处理规范化的第二行运行代码,并且如果我在没有第二行的情况下运行代码,我会得到类似的输出。所以要么我没有在正确的地方调用这个函数,要么我猜它并没有太大的区别。


阅读 86

收藏
2022-07-04

共1个答案

小编典典

只是为了更详细地回答这个问题,正如 Pavel 所说,批量标准化只是另一层,因此您可以使用它来创建所需的网络架构。

一般用例是在网络中的线性层和非线性层之间使用 BN,因为它将输入标准化为激活函数,以便您位于激活函数的线性部分(例如
Sigmoid)的中心。这里有一个小讨论

在上述情况下,这可能如下所示:


# import BatchNormalization
from keras.layers.normalization import BatchNormalization

# instantiate model
model = Sequential()

# we can think of this chunk as the input layer
model.add(Dense(64, input_dim=14, init='uniform'))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dropout(0.5))

# we can think of this chunk as the hidden layer    
model.add(Dense(64, init='uniform'))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dropout(0.5))

# we can think of this chunk as the output layer
model.add(Dense(2, init='uniform'))
model.add(BatchNormalization())
model.add(Activation('softmax'))

# setting up the optimization of our weights 
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy', optimizer=sgd)

# running the fitting
model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2)

希望这能进一步澄清一些事情。

2022-07-04