caffe入门----Blob(一)(含各种编译错误解决)

来源:互联网 发布:如何入驻淘宝服务商 编辑:程序博客网 时间:2024/06/08 04:42

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.csdn.net/xmzwlw/article/details/48270225
赵永科 《深度学习:21天实战Caffe》

0 0
原创粉丝点击