在我训练了一些CNN的权重之后,我决定使用相同的网络架构来做预测。我设置了数据batch_size = 64。
我可以正确地运行pred_net.forward()函数,并且可以从blobs['prob']获得预测的类。
我的数据集中有20000个样本。如果我调用forward()函数的i时间,我将得到64*i样本转发到网络。因此,我不能涵盖这20000个样本,而不转发一些样本两次。
因此,我尝试了forward_all()函数。但我得到了一个例外没有任何有用的信息。我不知道怎么回事。
我认为forward()和forward_all()是相似的(但不是)。
下面是我的代码和错误消息的一部分:
pred_net = caffe.Net(pred_net_proto_file, 'kg_trained.caffemodel', caffe.TEST)
pred_net.forward_all()---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-6-cefd35621a35> in <module>()
----> 1 pred_net.forward_all()
/home/microos/Space/caffe-master/python/caffe/pycaffe.pyc in _Net_forward_all(self, blobs, **kwargs)
197 all_outs[out] = np.asarray(all_outs[out])
198 # Discard padding.
--> 199 pad = len(six.next(six.itervalues(all_outs))) - len(six.next(six.itervalues(kwargs)))
200 if pad:
201 for out in all_outs:
StopIteration: 希望,我把事情描述得很清楚。
发布于 2016-10-21 19:07:04
必须将要转发的数据传递给forward_all()函数:
pred_net = caffe.Net(pred_net_proto_file, 'kg_trained.caffemodel', caffe.TEST)
pred_net.forward_all(data=data_samples)假设您的CNN期望该形状的图像(3,224,224),那么您的data_samples应该具有该形状(20000,3,224,224)。
https://stackoverflow.com/questions/40181752
复制相似问题