Blob进阶5

net在caffe中代表一个完整的cnn模型,包含若干layer实例。

net是一张图纸,对应的是protoBuffer文本文件,描述文件*.prototxt,

1. 现在用自带的caffeNet模型描述文件,位于/caffe-master/models/bvlc_reference_caffenet/deploy.prototxt,

将此文件拷贝到当前工作目录下


2  在caffe根目录下编写net_demo.cpp如下:


#include<vector>
#include <iostream>
#include <caffe/net.hpp>
using namespace caffe;
using namespace std;
int main(void)
{
 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> cn=nn.layer_names();
 for(int i=0;i<cn.size();i++)
{
  cout<<"Layer #"<<i<<" : "<<cn[i]<<endl;
}
 return 0;
}


3 编译:

g++ -o netapp net_demo.cpp -I/home/hk/Documents/caffe-master/include -D CPU_ONLY -I/home/hk/Documents/caffe-master/./build_rease/src/ -L/home/hk/Documents/caffe-master/build/lib -lcaffe -lglog -lboost_system -lprotobuf


出错:





在github找到答案网址 https://github.com/NVIDIA/DIGITS/issues/105

$ protoc src/caffe/proto/caffe.proto --cpp_out=.
$ mkdir include/caffe/proto
$ mv src/caffe/proto/caffe.pb.h include/caffe/proto
上面代码在先用caffe.proto生在src/caffe/proto目录下生成caffe.pb 和caffe.pb.h      然后在 include/caffe目录下新建proto,   然后把src/caffe/proto目录下caffe.pb.h移动进include/caffe/proto去

4 运行

  ./netapp


在一篇博客里看到一种方法(找不到连接了,哎,被他带坑了好像,不用编译cmake也行):
 其实找不到libcaffe.so.1.0.0-rc3主要原因在于使用了make进行编译,使得caffe的python接口只能在这个目录下面才能找得到这个库.解决办法是使用cmake进行编译:
cd caffe-master
mkdir build
cd build
cmake ..

 第一次用cmake编译,体验不同:




比make快,但是make pycaffe慢一点,
看着很担心像要出错的样子:

还好成功生成。

但是还是报同样错误,看到博客http://www.cnblogs.com/Anker/p/3209876.html ,突然想到自己以前的博客http://blog.csdn.net/ture_dream/article/details/52653285 情况类似

用    sudo ldconfig /home/hk/Documents/caffe-master/build/lib
不报错了!!

当然,好像有一个更安全的方式:

export LD_LIBRARY_PATH=/home/hk/Documents/caffe-master/build/lib/:$LD_LIBRARY_PATH 


5 继续重新编译运行
./netapp

结果:对应deploy.prototxt可以看到Blob和layer数目

从下面的图看出,blob对象用于存放每个layer输入/输出中间结果,layer则根据Net描述对指定的输入输出Blob进行某些计算处理(卷积,下采样,全连接,非线性变化,计算代价函数等),输出结果放到对应的Blob。

输入Blob和输出Blob可能是同一个,同名的Blob表示同一个Blob对象,同名的layer表示同一个layer对象,而Blob和layer同名没有直接关系










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值