title: how to understand caffe's bilinear upsampling
body: <p>caffe'doc says that:</p>
  
  <pre><code>layer {
    name: "upsample", type: "Deconvolution"
    bottom: "{{bottom_name}}" top: "{{top_name}}"
    convolution_param {
      kernel_size: {{2 * factor - factor % 2}} stride: {{factor}}
      num_output: {{C}} group: {{C}}
      pad: {{ceil((factor - 1) / 2.)}}
      weight_filler: { type: "bilinear" } bias_term: false
    }
    param { lr_mult: 0 decay_mult: 0 }
  }
  </code></pre>
  
  <p>I have no idea why to set kenrel_size, stride, and pad like this?</p>