1

我正在尝试用我自己的数据微调 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) 通常用于减少过度拟合,但在批量归一化网络中,我们发现它可以被移除或降低强度。

4

0 回答 0