من چیزی که شخصا دیدم برای تست ازش استفاده میشد.
اینجا رو ببینید
(یه سمپل mnist من باید داشته باشم یجایی تو سیستمم (دسته بندی تو سی++ هست البته که برای ورود تصاویر از memorydata layer استفاه میشه) پیدا کردم اینجا قرار میدم )
این یه کدی هست که خیلی وقت پیش من نوشته بودم برای تست mnist اون اوائل که شروع کرده بودم!
//...
// get a testing image and displaying it
Mat img = imread(path);//(CAFFE_ROOT + "/examples/images/mnist_5.png");
//cvtColor(img, img, CV_BGR2GRAY);
imshow("img", img);
waitKey(1);
// Load net
Net<float> net(prototextPath);//mnist/lenet_test-memory-1.prototxt"
string model_file = modelPath;//mnist/lenet_iter_10000.caffemodel"
net.CopyTrainedLayersFrom(model_file);
// setting the batch for testing
vector<Mat> batch;
batch.push_back(img);
// push vector<Mat> to data layer
float loss = 0.0;
boost::shared_ptr<MemoryDataLayer<float> > memory_data_layer;
memory_data_layer = boost::static_pointer_cast<MemoryDataLayer<float>>(net.layer_by_name("data"));
vector<int> labels(batch.size());
memory_data_layer->AddMatVector(batch, labels);
// Net forward
const vector<Blob<float>*> & results = net.Forward(&loss);//.ForwardPrefilled(&loss);
float *output = results[1]->mutable_cpu_data();
// Display the output
for (int i = 0; i < 10; i++) {
printf("Probability to be Number %d is %.3f\n", i, output[i]);
}
return waitKey(0);
}
دقت کنید فایل deploy شما باید از memorydata استفاده کرده باشه . بعنوان مثال تعریف لایه اون موقع به این شکل بود :
layers {
name: "data"
type: MEMORY_DATA
top: "data"
top: "label"
memory_data_param
{
batch_size: 1
channels: 1
height: 28
width: 28
}
transform_param {
scale: 0.00390625
}
}