在VS2013中打开caffe源代码,都能编译成功,下一步应该怎么训练模型
展开全部
作者:圣行
链接:
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
matlab 和python没有用过。如果是习惯用opencv的话,可以使用memory_data,请参考这个链接里的例子:C++ Image Classification with memory_data_param · Issue #1443 · BVLC/caffe · GitHub
给一个具体点的例子吧(不知道贴代码是不是有点不合知乎气质?),总共分三步:
第一步,构造网络:
enum Phase p = TEST;
Net caffe_test_net(argv[1],p);
caffe_test_net.CopyTrainedLayersFrom(argv[2]);
第二步,构造数据并加入到网络输入层:
//create the input data
vector md_images;
vector md_labels;
//////operations for the input data
Mat original = imread("images\\lena_gray.png"); //随便的图片,没有实用意义,可忽略
Mat *sub_img = new Mat;
for (int i = 0; i < 10; i++){
original(Range(i, i + 28), Range(i, i + 28)).copyTo(*sub_img); // 28x28,可以直接用lenet
md_images.push_back(*sub_img);
md_labels.push_back(0);
}
第三步,执行test操作:
for (int i = 0; i < 10; i++){
const vector<Blob*>& result = caffe_test_net.ForwardPrefilled();
链接:
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
matlab 和python没有用过。如果是习惯用opencv的话,可以使用memory_data,请参考这个链接里的例子:C++ Image Classification with memory_data_param · Issue #1443 · BVLC/caffe · GitHub
给一个具体点的例子吧(不知道贴代码是不是有点不合知乎气质?),总共分三步:
第一步,构造网络:
enum Phase p = TEST;
Net caffe_test_net(argv[1],p);
caffe_test_net.CopyTrainedLayersFrom(argv[2]);
第二步,构造数据并加入到网络输入层:
//create the input data
vector md_images;
vector md_labels;
//////operations for the input data
Mat original = imread("images\\lena_gray.png"); //随便的图片,没有实用意义,可忽略
Mat *sub_img = new Mat;
for (int i = 0; i < 10; i++){
original(Range(i, i + 28), Range(i, i + 28)).copyTo(*sub_img); // 28x28,可以直接用lenet
md_images.push_back(*sub_img);
md_labels.push_back(0);
}
第三步,执行test操作:
for (int i = 0; i < 10; i++){
const vector<Blob*>& result = caffe_test_net.ForwardPrefilled();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询