Caffe:train_test.prototxt和deploy.prototxt有什么区别?

时间:2016-08-05 02:16:28

标签: caffe pycaffe

在像GoogleNet这样的相关模型中 https://github.com/BVLC/caffe/tree/master/models/bvlc_googlenet

我们可以看到两个描述网络的.prototxt文件,它们之间的差异是什么?

  

deploy.txttrain_test.prototxt

我的关键问题是,在python界面中,为什么我只能使用前者?也就是说:

0

此代码运行正确:

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)

这不是。它给出了错误信息:

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)

为什么呢?有什么区别?

1 个答案:

答案 0 :(得分:7)

train_val.prototxt用于培训,而deploy.prototxt用于推理。

train_val.prototxt包含培训数据所在位置的信息。在您的情况下,它包含包含训练数据的lmdb文件的路径。

deploy.prototxt包含有关输入大小的信息,但不包含有关输入本身的任何信息。因此,您可以将具有该大小的任何图像作为输入传递给它并进行推理。

当您加载train_val.prototxt时,它会查找其中提到的培训数据文件。您收到错误,因为无法找到它。

提示:进行推理时,最好使用deploy.prototxt