本课学习两种层:Dropout 和 Batch Normalization
Dropout layer
可以帮助纠正过度拟合。
我们在每一步训练中都会随机丢弃某一层的部分输入单元,从而使网络更难从训练数据中学习到那些虚假的模式。取而代之的是,它必须寻找宽泛、一般的模式,其权重模式往往更加稳健。
Keras:添加Dropout
需将 Dropout 图层放在您想要应用 Dropout 的图层之前:
keras.Sequential([
# ...
layers.Dropout(rate=0.3), # apply 30% dropout to the next layer
layers.Dense(16),
# ...
])
Batch Normalization layer
将所有数据放在一个通用的尺度上,可以帮助纠正缓慢或不稳定的训练。
batch normalization layer:在网络内部进行归一化处理
批量归一化层(batch normalization layer)会在每个批次进入时对其进行查看,首先使用其自己的均值和标准差对批次进行归一化,然后使用两个可训练的重新缩放参数将数据置于新的比例上。
Keras:添加Batch Normalization
批量归一化似乎可以用在网络的任何地方。您可以把它放在层之后…
layers.Dense(16, activation='relu'),
layers.BatchNormalization(),
… 或层与其激活函数之间:
layers.Dense(16),
layers.BatchNormalization(),
layers.Activation('relu'),
如果把它添加到网络的第一层,它就可以充当一种自适应预处理器,替代 Sci-Kit Learn 的 StandardScaler。