caffe的MATLAB接口配置

4 篇文章 0 订阅
3 篇文章 0 订阅

在运行SRCNN作者的代码的时候运行到saveFilters.m时候,程序总是在报错。经过一番折腾,才解决了这个问题。
机器环境: Ubuntu 16.04 服务器版, CUDA 8.0, gcc 4.7.0, Matlab R2015b.

由于服务器上最初安装的gcc是4.7版本,所以在后面配置接口时候总是有问题。必须将gcc升级到5.4.0版本才不会报错,所以本文第一部分先介绍gcc的升级,第二部分介绍caffe的MATLAB接口配置。

1 升级gcc

首先,我们要去下载gcc,由于wget 下载时一直显示超时错误,所以我最终去用电脑下载了,然后用winSCP上传到服务器上的。上传后,就是解压文件。下载编译所需要的依赖项。

sudo tar -zxvf gcc-5.4.0.tar.gz  
cd gcc-5.4.0 //进入解包后的gcc文件夹  
sudo ./contrib/download_prerequisites  //下载依赖项  
cd ..  //返回上层目录

建立编译输出目录:

sudo mkdir gcc-build-5.4.0  

进入输出目录,执行以下命令,并生成makefile文件:

cd gcc-build-5.4.0  
sudo ../gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib  

编译:

sudo make -j4

接下来就是等待了,整个过程大约40分钟左右。PS:最好不要在编译过程中再去做别的什么事,整个过程CPU都是满载的,要是莫名终止了,后面麻烦事也不少。
安装:

make install

检查版本:

gcc -v

这里写图片描述
我在运行到这里的时候,还是显示是gcc 4.7。这并不是说gcc 5.4没有安装成功,而是因为gcc的默认版本并没有修改。所以我们通过下面的命令可以修改gcc的默认版本。
首先,看一下你的Ubuntu都装了哪些版本的gcc

ls /usr/bin/gcc* -l  

我的显示如下:
这里写图片描述
由上面显示可以看出默认安装的是gcc-4.7,现在来改成gcc-5.4
删除gcc-4.7的软连接文件/usr/bin/gcc。(只是删除软连接)

sudo rm /usr/bin/gcc

然后建一个软连接,指向gcc-5.4

sudo ln -s /usr/bin/gcc-5.4 /usr/bin/gcc

最后,再次查看gcc版本,结果如下:
这里写图片描述

2 caffe的MATLAB接口配置

修改caffe文件夹下的Makefile.config中Matlab的路径,即添加

CXXFLAGS += -std=c++11
MATLAB_DIR := /usr/local/R2015b 

上面显示的是我自己的Matlab安装路径,大家可以改成自己的。
打开.bashrc文件,添加相应文件,要根据自己的路径修改

sudo vim ~/.bashrc 

export PATH=$PATH:/usr/local/MATLAB/R2015b/bin

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64:/usr/local/MATLAB/R2015b/sys/os/glnxa64

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6

最后保存退出,如果不进行上述过程,会报Error 255的错误。
这里写图片描述
紧接着执行如下命令(切换到caffe根目录下执行)

make matcaffe

这里写图片描述
不用管报了多少警告,只要最后显示mex成功即可。
然后运行命令

make mattest

报下面的错误
这里写图片描述
说缺少libcudart.so.8.0文件。执行下面的命令(注意自己CUDA的版本号!)

sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig  
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig

上面的文件,可以一条条的执行,他们会一条条的报错,也可以一次性都执行了再去执行make mattest
执行完这些后,终于显示成功了。
这里写图片描述

3 使用MATLAB

在正确的进行了上两步后,我们就可以使用caffe的MATLAB接口了,这里我就运行了SRCNN的saveFilters.m函数。
结果还是会报如下错误:
这里写图片描述
解决办法:在相应的saveFilters.m文件的首行添加如下代码即可

if exist('matlab/+caffe','dir')
    addpath('matlab');
else
    error('please run this demo from caffe/matlan/demo');
end

再次运行saveFilter.m函数,便可正常运行,输出.mat文件。
这里写图片描述
这里写图片描述

本文参考了以下链接:
http://blog.csdn.net/rt5rte54654/article/details/54742981
http://blog.csdn.net/weiqi_fan/article/details/71023222
http://blog.csdn.net/u014696921/article/details/60140264
http://blog.csdn.net/xie1xiao1jun/article/details/54378079

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
caffe是一个深度学习框架,而matlab是一个数学计算软件,两者可以结合使用来进行深度学习的研究和开发。具体来说,可以使用matlab来编写caffe的网络结构和训练脚本,并使用caffe来进行模型的训练和测试。 下面是一个使用caffematlab结合进行图像分类的例子: 1. 首先需要安装caffematlab,并将它们配置好。 2. 编写网络结构和训练脚本。可以使用matlabcaffe接口来编写网络结构和训练脚本,例如: ```matlab % 定义网络结构 net = caffe.NetSpec(); net.data = caffe.Input('shape', [28 28 1 100]); net.conv1 = caffe.Convolution('kernel_size', 5, 'num_output', 20, 'stride', 1); net.pool1 = caffe.Pooling('pool', 'MAX', 'kernel_size',2, 'stride', 2); net.conv2 = caffe.Convolution('kernel_size', 5, 'num_output', 50, 'stride', 1); net.pool2 = caffe.Pooling('pool', 'MAX', 'kernel_size', 2, 'stride', 2); net.fc1 = caffe.InnerProduct('num_output', 500); net.relu1 = caffe.ReLU(); net.fc2 = caffe.InnerProduct('num_output',10); net.loss = caffe.SoftmaxWithLoss(); % 保存网络结构 caffe.Net('lenet.prototxt', 'train'); % 训练网络 caffe.set_mode_cpu(); solver = caffe.Solver('lenet_solver.prototxt');solver.solve(); ``` 3. 进行模型的训练和测试。可以使用caffe提供的命令行工具来进行模型的训练和测试,例如: ```shell # 训练模型 caffe train -solver lenet_solver.prototxt # 测试模型 caffe test -model lenet.prototxt -weights lenet_iter_10000.caffemodel -gpu 0 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值