ubuntu16.04 安装caffe以及python接口

http://blog.csdn.net/qq_25073253/article/details/72571714
http://blog.csdn.net/greed7480/article/details/68486039

首先在你要安装的路径下 clone :
git clone https://github.com/BVLC/caffe.git

进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :
sudo cp Makefile.config.example Makefile.config

复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。
然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:

sudo gedit Makefile.config
修改 Makefile.config 文件内容:

1.应用 cudnn

#USE_CUDNN := 1
修改成:
USE_CUDNN := 1

2.应用 opencv 版本

#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3

3.使用 Python 接口

#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

4.修改 python 路径
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial


5 OK ,可以开始编译了,在 caffe 目录下执行 :
make all -j8
这是如果之前的配置或安装出错,那么编译就会出现各种各样的问题,所以前面的步骤一定要细心。
编译成功后可运行测试:
make runtest -j8


其中,我最初在make runtest 的时候是用的指令$ sudo make runtest,结果就报
错:
.build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0:
cannot open shared object file: No such file or directory
而换为$ make runtest 后就没报错了,刚开始特别纳闷,为什么加了超级用户权
限后反而还会有错误呢,谷歌后才知道错误里的“libcudart.so.8.0”是位于
“/usr/local/cuda-8.0/lib64”文件夹下的,而这个路径我们之前已将其添加进了
“LD_LIBRARY_PATH”环境变量中,但通过sudo 来执行该命令可能会导致其无法
使用“LD_LIBRARY_PATH”环境变量,这只是我目前个人的猜测,如果有清楚具
体原因的人,也请麻烦告知我一下,谢了!

6 添加python接口
首先编译 pycaffe :
cd caffe
sudo make pycaffe -j8

7 环境变量

方法1 当前用户添加
sudo echo export PYTHONPATH="home/imagealg/software/caffe/python" >> ~/.bashrc
source ~/.bashrc

方法2 全局用户添加
添加~/caffe/python到$PYTHONPATH:
$ sudo gedit /etc/profile
# 添加: export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
$ source /etc/profile # 使之生效

 

8 测试

cd $CAFFE_ROOT
./data/mnist/get_mnist.sh
数据转化
./examples/mnist/create_mnist.sh
训练模型
./examples/mnist/train_lenet.sh
测试模型
./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel -gpu=0

 

转载于:https://www.cnblogs.com/adong7639/p/7843264.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongodb $ifNull

$ifNull用于判断第一个表达式是否为 NULL&#xff0c;如果为 NULL 则返回第二个参数的值&#xff0c;如果不为 NULL 则返回第一个参数的值。 $ifNull表达式格式为&#xff1a; { $ifNull: [ <expression>, <replacement-expression-if-null> ] }例子&#xff1a;…

Failed to resolve: android.arch.lifecycle:runtime:1.0.0,Failed to resolve: support-v4

Android studio 导入项目报错&#xff1a; Failed to resolve: com.android.support:support-core-ui:26.1.0 Add Google Maven repository and sync project Open File Show in Project Structure dialog Failed to resolve: android.arch.lifecycle:runtime:1.0.0 Open Fil…

工作165:混入调用的时候

直接created里面定义 不需要在其他位置进行过多操作

Hibernate总结

1.为什么要使用Hibernate开发你的项目呢&#xff1f;Hibernate的开发流程是怎么样的&#xff1f; 为什么要使用①.对JDBC访问数据库的代码做了封装&#xff0c;大大简化了数据访问层繁琐的重复性代码。②.Hibernate 是一个基于JDBC的主流持久化框架&#xff0c;是一个优秀的ORM…

mpvue 中控制swiper滑动,禁止滑动,只允许左滑动,不允许右滑

直接禁止滑动&#xff0c;使用&#xff1a;catchtouchmove参数就OK。 例子&#xff1a; <swiper-item v-for"(item,index) in examList" :key"index" catchtouchmove"false">content</swiper-item>但是我的需求是进行人员测评&…

工作166:错误的处理方式

1这种处理没有数据 2 这样处理勉强调用了接口 但是获取数据还是有问题

07异常处理

1、 【请尝试解释以下奇怪的现象&#xff01;】 int i1, j0, k; ki/j; 代码在运行时会引发异常 上边代码在运行时不会引发异常 浮点数除以0&#xff1a;Infinity 可以使用javap去反汇编两个示例程序的.class文件&#xff08;一个是AboutException.class&#xff0c;另一个是Thr…

java、Android 数组转集合

<array name"title"><item>51巅峰钜惠</item><item>十大星级品牌联盟&#xff0c;全场2折起</item><item>生命不是要超越别人&#xff0c;而是要超越自己。</item><item>己所不欲&#xff0c;勿施于人。——孔子<…

mac instantclient_12_2 安装配置

1、创建一个目录进行文件存放 mkdir oraclecd oracle2、instantclient_12_2文件拷贝到oracle目录下 3、拷贝重要文件到~/lib目录 mkdir ~/libln -s instantclient_12_2/libclntsh.dylib ~/lib/cp instantclient_12_2/{libclntsh.dylib.12.1,libnnz12.dylib,libociei.dylib} …

工作166:正确eachrt渲染方式

1第一步 2第二步 3第三步

Effective C++: 06继承与面向对象设计

32&#xff1a;确定你的public继承塑模出is-a关系 以C进行面向对象编程&#xff0c;最重要的一个规则是&#xff1a;public继承表示的是"is-a"&#xff08;是一种&#xff09;的关系。 如果令class D以public形式继承class B&#xff0c;你便是告诉编译器说&#xff…

Android轮播图 banner,图片视频混播banner

1、使用Android循环滚动控件——ViewFlipper实现方法&#xff1a;https://blog.csdn.net/meixi_android/article/details/84615857 2、使用第三方module实现方法&#xff1a; 需要引入的module下载链接&#xff1a;https://pan.baidu.com/s/1sdlQefBTfkLsNO__ouwz8w 添加mod…

oracle 实现 drop table if exists

使用如下代码进行替换&#xff1a; BEGINEXECUTE IMMEDIATE DROP TABLE this_table; EXCEPTIONWHEN OTHERS THENNULL; END;

Android recycleview使用详解,recycleview实现九宫格布局即横向排列,recycleview设置item占位数量大号item或小号item

1、添加recycleview依赖 compile(com.android.support:recyclerview-v7:25.1.1) {force true } 2、item.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xm…

cesium billboard 点击 不想显示infobox

cesium的一些实体默认点击&#xff0c;会弹出infobox。 如果不想弹出&#xff0c; 初始化的时候加上参数infoBox: false。 不想显示选中&#xff0c; 初始化的时候加上参数selectionIndicator: false。 示例&#xff1a; var viewer new Cesium.Viewer(cesiumContainer,…

工作168:代码中的删除逻辑处理

1首先找到对应方法里面的删除方法 2点击之后进行删除操作 在当前方法里面直接进行混入删除 删除结束

java如何对List集合中的元素进行排序(请收藏)

在java开发中有时候我们需要对List集合中的元素按照一定的规则进行排序&#xff0c;比如说有个Person的集合&#xff0c;我们要根据Person的age属性进行排序输出&#xff0c;这就需要用到Java中提供的对集合进行操作的工具类Collections&#xff0c;其中的sort方法&#xff0c;…

cesium面板动态显示并跟随移动

我的需求&#xff0c;首先显示一个billboard&#xff0c;点击billboard后&#xff0c;在旁边显示一个div面板&#xff0c;并且该面板随着地图拖拽也能进行相对运动。 概要实现步骤&#xff1a; 1、自定义div面板&#xff0c;面板需要设置id值 2、使用我自己定义的函数&#…

工作169:删除操作

this.$confirm(你正在进行删除操作, 提示, {confirmButtonText: 确定,cancelButtonText: 取消,type: warning}).then(()>{deleteAction(path.join(this.url.delete, record.id))this.$message.success(res.msg);}).catch((err)>{this.$message.warning(err);})