Функция Pycaffe Net forward_all () не работает

После того, как я обучил некоторые веса 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: 

Надеюсь, я ясно описал ситуацию.


person Cuo Show    schedule 21.10.2016    source источник


Ответы (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), тогда ваши образцы данных должны иметь форму (20000,3 224 224)

person Erik B.    schedule 21.10.2016
comment
Согласно вашему ответу, кажется, нужно ввести некоторые данные в файл forward_all. Но в моем prototxt, net define источником данных является lmdb, могу ли я использовать данные внутри prototxt? Спасибо - person Cuo Show; 22.10.2016