Net数据结构应该对应一个完整的CNN模型,它包含若干个layer实例。
这里是展示一个Net的基本用法自己实现一个读取net内容的实例,输出模型内的blob,layer的名称。
#include<vector>
#include<iostream>
#include<caffe\net.hpp>
#include"head.h"
using namespace caffe;
using namespace std;
int main()
{
std::string proto("deploy.prototxt");
Net<float> nn(proto, caffe::TEST);
vector<string> bn = nn.blob_names();
for(int i =0;i!=bn.size();i++)
{
cout << "blob #" << i << bn[i] << endl;
}
vector<string> ln = nn.layer_names();
for (int i = 0; i != ln.size(); i++)
{
cout << "layer #" << i << ln[i] << endl;
}
return 0;
}
输出相关结果如下:
我们还可以通过使用has_blob()、has_layer()函数来查询当前net对象是否包含制定名字的blob或者layer对象,如果有,则可以通过调用blob_by_name()、lay_by_name()函数直接获取相应的blob或者layer指针,进行提取某层计算输出特征,或者某个blob中的权值,这都是很有意义的。
用法比较基础,后期如果有更多了解再补充高深用法。