将参数传递给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++ 代码会导致此行为。该线程有解决方案:
我发现这行代码可以将输入发送到 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++ 代码会导致此行为。该线程有解决方案: