Я пытаюсь использовать Lib Caffe для извлечения функций из изображений, чтобы я мог использовать его для других целей в моем проекте.
Моя Caffe Neural Network отлично работает для первого изображения, но на втором изображении выдает следующую ошибку:
Check failed: bottom[0]->shape() == bottom[i]->shape() bottom[0]: 87122736 0 85536896 0 (37632), bottom[1]: 1 3 112 112 (37632)
И первое, и второе изображения одинаковы, а их форма (112 x 112) с 3 каналами.
Код
Caffe::set_mode(Caffe::CPU);
my_net.reset(new caffe::Net<float>(arch, caffe::TEST));
my_net->CopyTrainedLayersFrom(model);
for(int i=0; i<num_images;i++) {
Blob<float> *my_blob = my_net->input_blobs()[0];
// accessing blob attributes just for debugging purposes
// 1 after first call OK, 87122736 at second call (?)
int batch_size = my_blob->num();
// 3 after first call OK, 0 at second call (?)
int channels = my_blob->channels();
// 112 after first call OK, 85536896 at second call (?)
int height = my_blob->height();
// 112 after first call OK, 0 at second call (?)
int width = my_blob->width();
my_blob->set_cpu_data(images[i]);
my_net->Forward();
//delete my_blob; <-- IT WAS CAUSING THE PROBLEM
}
Как я могу просто кормить сеть, чтобы я мог запустить ее на следующих изображениях? Как заставить input_blobs () [0] указывать на тот же блок памяти, что и с первой попытки? Как видите, атрибуты у одних и тех же параметров разные input_blobs()[0]
.