我正在尝试用我自己的数据微调 SSD MobileNet v2(来自模型动物园)。在 pipeline.config 我看到它use_dropout
设置为 false。这是为什么?我认为应该使用 dropout 来防止过度拟合。
box_predictor {
convolutional_box_predictor {
conv_hyperparams {
regularizer {
l2_regularizer {
weight: 3.99999989895e-05
}
}
initializer {
truncated_normal_initializer {
mean: 0.0
stddev: 0.0299999993294
}
}
activation: RELU_6
batch_norm {
decay: 0.999700009823
center: true
scale: true
epsilon: 0.0010000000475
train: true
}
}
min_depth: 0
max_depth: 0
num_layers_before_predictor: 0
use_dropout: false
dropout_keep_probability: 0.800000011921
kernel_size: 3
box_code_size: 4
apply_sigmoid_to_scores: false
}
}
是因为批量标准化吗?在这篇论文中,它说:
3.4 Batch Normalization 对模型进行正则化
当使用 Batch Normalization 进行训练时,可以看到一个训练示例与 mini-batch 中的其他示例一起出现,并且训练网络不再为给定的训练示例生成确定性值。在我们的实验中,我们发现这种效果有利于网络的泛化。虽然 Dropout (Srivastava et al., 2014) 通常用于减少过度拟合,但在批量归一化网络中,我们发现它可以被移除或降低强度。