title: Tensorflow OD API - Use of dropout when fine-tuning a model
body: <p>I'm trying to fine-tune the SSD MobileNet v2 (from the model zoo) with my own data. In pipeline.config I see that <code>use_dropout</code> is set to false. Why is that? I thought dropout should be used to prevent overfitting.</p>
  
  <pre><code>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
    }
  }
  </code></pre>
  
  <p>Is it because of batch normalization? In this <a href="https://arxiv.org/pdf/1502.03167.pdf" rel="nofollow noreferrer">paper</a>, it says that:</p>
  
  <blockquote>
    <p>3.4 Batch Normalization regularizes the
    model</p>
    
    <p>When training with Batch Normalization, a training example is seen in conjunction with other examples in the
    mini-batch, and the training network no longer producing deterministic values for a given training example. In
    our experiments, we found this effect to be advantageous
    to the generalization of the network. Whereas Dropout
    (Srivastava et al., 2014) is typically used to reduce overfitting, in a batch-normalized network we found that it can
    be either removed or reduced in strength.</p>
  </blockquote>