我发现这行代码在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
但这仍然会导致同样的错误。
答案 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