在https://machinelearningmastery.com/how-to-reduce-overfitting-with-dropout-regularization-in-keras/中,SpatialDropout2D直接放在Convolutional层后面。我觉得现在应该如何应用这些层有点困惑。我也曾在Keras页面上阅读过,SpatialDropout应该直接放在ConvLayer之后(但我无法再找到这个页面)。
以下顺序是否正确?
ConvLayer - SpatialDropout - BatchNormalization - 激活函数 - MaxPooling
我真的希望能得到一些提示,先谢谢了。
更新 实际上,我的目标是在以下CNN架构中将dropout替换为spatial dropout:
model = Sequential()
model.add(Conv2D(32,(3,3))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Conv2D(32,(3,3))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2))
model.add(Dropout(0.2))
model.add(Conv2D(64, (3,3))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Conv2D(64,(3,3))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(512))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.4))
model.add(Dense(10))
model.add(Activation('softmax'))