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

Passing arguments to the forward function in caffe

我发现这行代码可以将输入发送到 caffe 中的网络:

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

我尝试按如下方式为我的工作改编此代码:

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

where 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

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

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

尝试

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

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

解决这个问题的方法是关闭原始文本。 PyCaffe 环绕的 C++ 代码会导致此行为。该线程有解决方案: