#python #caffe #pycaffe
#python #caffe #pycaffe
Вопрос:
После того, как я определил некоторые веса 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:
Надеюсь, я все четко описал.
Ответ №1:
вы должны передать данные, которые хотите переслать, в функцию 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)
Комментарии:
1. Согласно вашему ответу, похоже, необходимо ввести некоторые данные в
forward_all
. Но в моемprototxt, net define
моем источнике данных естьlmdb
, могу ли я использовать данные внутриprototxt
? Спасибо