将参数传递给caffe中的forward函数

时间:2015-07-15 14:43:13

标签: python deep-learning caffe

我发现这行代码在caffe中向网络发送输入:

out = NET.forward(**{NET.inputs[0]: np.asarray([im_proc])})

我尝试按照以下方式为我的工作调整此代码:

out = net.forward(**{net.inputs[0]:im_proc})

其中im_proc = np.zeros((100,9))(仅用于测试)但我收到以下错误:

IndexError: list index out of range

我无法理解为什么我不能以这种方式运行前进方法。我可以定期打电话给net.forward()

 In [32]: net.forward()
 Out[32]: 
 {'cross_entropy_loss': array(0.6027408838272095, dtype=float32),
 'l2_error': array(1.7882403135299683, dtype=float32)}

从评论中我了解到我应该使用caffe.io.Transformer函数初始化输入数组。

我尝试了以下循环:

for ix,in_ in enumerate(im_proc):
   caffe_in[ix] = caffe.io.Transformer.preprocess(net.inputs[0],in_)
   out = net.forward(**{net.inputs[0]:im_proc})
   print out

但这仍然会导致同样的错误。

2 个答案:

答案 0 :(得分:0)

net对象需要列表图像作为输入,您只提供一张图片。

尝试

out = net.forward(**{net.inputs[0]: [ im_proc ] })

请注意[]周围的方括号(im_proc)将其转换为包含单个图像的列表。

答案 1 :(得分:0)

解决方法是切换原型文本。 PyCaffe包装的C ++代码导致了这种行为。该主题具有解决方案:Prediction in Caffe - Exception: Input blob arguments do not match net inputs