Blob是caffe最基础的数据结构。它有4维[num_,channels_,height_,width_]
我们通过代码来看看
#include <vector>
#include <iostream>
#include <caffe/blob.hpp>
using namespace caffe;
using namespace std;
int main(void){
//声明一个Blob变量
Blob<float> a;
//打印形状,是0现在
cout<<"Size:"<<a.shape_string()<<endl;
//reshape成1,2,3,4
a.Reshape(1,2,3,4);
cout<<"Size:"<<a.shape_string()<<endl;
//创建Blob对象之后,可以通过mutable_cpu_data函数改变其值
float *p = a.mutable_cpu_data();
for (int i = 0; i < a.count(); ++i)
{
p[i]= i;
}
// int u = a.num();
for(int u = 0; u<a.num(); u++){
for(int v = 0; v < a.channels(); v++){
for(int w=0; w<a.height(); w++){
for(int x=0; x<a.width(); x++){
cout<<"a["<<u<<"]["<<v<<"]["<<w<<"]["<<x<<"]="<<a.data_at(u,v,w,x)<<endl;
}
}
}
}
return 0;
}
命令行编译:
g++ -o app3 blob_demo.cpp -I $CAFFE_ROOT/include/ -D CPU_ONLY -I /home/yui/code/caffe/.build_release/ -I $CAFFE_ROOT/src/ -L $CAFFE_ROOT/bulit/lib -L /home/yui/code/caffe/.build_release/lib/ -L /usr/local/lib/libgflags.so.2 -L /usr/local/lib/libgflags_nothreads.so -L /usr/local/lib/libgflags.so.2 -lcaffe -lglog -lgflags -lboost_system -fPIC -lpthread
就是这短短的代码编译频频出错。解决办法归纳如下:
出现
fatal error: caffe/proto/caffe.pb.h: No such file or directory
解决方法: 用protoc从caffe/src/caffe/proto/caffe.proto生成caffe.pb.h和caffe.pb.cc
wuliwei@wulw:~/caffe/src/caffe/proto$ protoc --cpp_out=/home/wuliwei/caffe/include/caffe/ caffe.proto
然后出现了:
undefined reference to symbol ‘_ZN6google4base21CheckOpMessageBuilder7ForVar2Ev’
出现原因是因为用到了google的glog和gflags,但是找不到所以不认识。解决方法安装glog和gflags。不知道为啥安装高版本的gflags不能兼容低版本的,只好装了gflags2.0才能跑。其中装gflags2.1的时候报错:
找不到config.h
解决办法找到/home/yui/code/reviews/gflags-2.1.1/src下的util.h注释掉#include
// #include <config.h>
编译没有出错,但是运行出现:
./app3: error while loading shared libraries: libgflags.so.2: cannot open shared object file: No such file or directory
原因找libgflags.so.2的时候路径为 /usr/lib, 解决办法:
sudo cp /usr/local/lib/libgflags.so.2 /usr/lib/
出现:
./app3: error while loading shared libraries: libcaffe.so.1.0.0-rc5: cannot open shared object file: No such file or directory
解决办法:
export LD_LIBRARY_PATH=$CAFFE_ROOT/build/lib:$LD_LIBRARY_PATH
至此出结果:
参考:
http://blog.youkuaiyun.com/xmzwlw/article/details/48270225
赵永科 《深度学习:21天实战Caffe》