0

使用 ipython 时:

   net = caffe.Classifier(MODEL_FILE, PRETRAINED)

当我使用原始 train.prototxt 作为 pretrained_file(PRETRAINED) 时出现异常

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-5-af51e3c78bed> in <module>()
      2 plt.rcParams['image.interpolation'] = 'nearest'
      3 plt.rcParams['image.cmap'] = 'gray'
----> 4 net = caffe.Classifier(MODEL_FILE, PRETRAINED)
/home/xiayu/work/caffe/caffe-master/python/caffe/classifier.pyc in 

__init__(self, model_file, pretrained_file, image_dims, mean, input_scale, raw_scale, channel_swap)
     27 
     28         # configure pre-processing
---> 29         in_ = self.inputs[0]
     30         self.transformer = caffe.io.Transformer(
     31             {in_: self.blobs[in_].data.shape})

IndexError: list index out of range

我不知道为什么in_ = self.inputs[0]索引0超出范围,在这里我知道指定的 deploy.prototxt 可能有效,但我不知道如何。

真的希望有人能回答我的问题!

4

1 回答 1

2

您会收到此错误,因为您train_val.prototxt没有“外部”输入:网络没有预期但网络未提供的“底部”。
这是因为它train_val.prototxt有一个专门的数据层来处理输入(通常使用预先计算的数据集,如 lmdb/leveldb/hdf5 等)。
如果你仔细观察deploy.prototxt你会发现它没有输入层,而是有一个声明:

net: "some name"
input: "data"
input_shape {
  dim: 10
  dim: 3
  dim: 224
  dim: 224
}

该语句声明了一个“外部”输入,即生成的网络将期望输入名称为“data”的 shape (10,3,224,224)
train_val.prototxt没有这样的声明。

于 2016-01-07T14:07:09.250 回答