title: Caffe: what's the difference between train_test.prototxt and deploy.prototxt?
body: <p>In pertained models like GoogleNet
  <a href="https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet" rel="nofollow">https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet</a></p>
  
  <p>we can see two .prototxt file describing the network, what's the <strong>differences</strong> between them?</p>
  
  <blockquote>
    <p><a href="https://github.com/BVLC/caffe/blob/master/models/bvlc_googlenet/deploy.prototxt" rel="nofollow">deploy.txt</a> and <a href="https://github.com/BVLC/caffe/blob/master/models/bvlc_googlenet/train_val.prototxt" rel="nofollow">train_test.prototxt</a></p>
  </blockquote>
  
  <p>My key question is , in python interface, why can I only use the former one? That is to say:</p>
  
  <pre><code>model_def = caffe_root + 'models/bvlc_googlenet/deploy.prototxt'
  
  model_weights = caffe_root + 'models/bvlc_googlenet/bvlc_googlenet.caffemodel'
  
  net = caffe.Net(model_def,model_weights,caffe.TEST)
  </code></pre>
  
  <p>this code runs correct while:</p>
  
  <pre><code>model_def = caffe_root + 'models/bvlc_googlenet/train_val.prototxt'
  
  model_weights = caffe_root + 'models/bvlc_googlenet/bvlc_googlenet.caffemodel'
  
  net = caffe.Net(model_def,model_weights,caffe.TEST)
  </code></pre>
  
  <p>this does not. and it gives out error information:</p>
  
  <pre><code>layer {
    name: "inception_4e/relu_5x5_reduce"
    type: "ReLU"
    bottom: "inception_4e/5x5_reduce"
    top: "inception_4e/5x5_reduce"
  }
  layer {
  I0805 10:15:13.698256 30930 layer_factory.hpp:77] Creating layer data
  I0805 10:15:13.698444 30930 net.cpp:100] Creating Layer data
  I0805 10:15:13.698465 30930 net.cpp:408] data -&gt; data
  I0805 10:15:13.698514 30930 net.cpp:408] data -&gt; label
  F0805 10:15:13.699956   671 db_lmdb.hpp:15] Check failed: mdb_status == 0 (2 vs. 0) No such file or directory
  *** Check failure stack trace: ***
  </code></pre>
  
  <p>Why? what's the differences?</p>