به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

سلام .
ممنون میشم تا در مورد تعریف این لایه و نحوه ی استفاده ی اون در کفه توضیح بدید ‌؟‌
من توضیح توی سایت را خواندم اما متوجه نشدم !
آیا این لایه برای بخش اعتبارسنجی شبکه هست ؟‌ و اینکه داده رو چگونه باید برای این لایه مشخص کنیم ؟‌
ممنون

توسط (150 امتیاز)

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

من چیزی که شخصا دیدم برای تست ازش استفاده میشد.
اینجا رو ببینید
(یه سمپل 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
  }
}    
توسط (4.3k امتیاز)
انتخاب شده توسط
درست متوجه شدم ! یعنی این لایه در اصل به جای لایه دیتایی هست که برای فاز تست تعیین میکنیم و دیتای تست رو بهش میدیم ؟‌ و یعنی می تونیم این لایه رو جایگزین یک لایه دیتا برای تست کنیم درسته ؟‌
بله من اون بخش از کدی که خیلی وقت پیش داشتم رو قرار دادم که مشخصتر باشه.
...