Ubuntu14.04+CUDA6.5环境下神经网络工具包Deepnet配置

deepnet是多伦多大学计算机系机器学习组开发的一个神经网络工具包,可以进行以下计算:

1.  Feed-forward Neural Nets
2.  Restricted Boltzmann Machines
3.  Deep Belief Nets
4.  Autoencoders
5.  Deep Boltzmann Machines
6.  Convolutional Neural Nets

主要的成果是其中的DBM,可用于多模态建模。论文是“Multimodal Learning with Deep Boltzmann Machines”



大部分内容转载自机器学习_刘伟   


1、下载Deepnet,解压并仔细阅读目录下的INSTALL.txt文件。

2、安装python数学工具包numpy,scipy和nose,如在终端上执行:

$ sudo apt-get install python3-numpy

可参考这里

测试,如scipy

python
>>> import scipy
>>> reload(scipy)

3、安装CUDA

增加关于CUDA的环境变量,修改文件~/.bashrc

$ sudo vi .bashrc
在最下面加上
export CUDA_BIN=/usr/local/cuda-6.5/bin
export CUDA_LIB=/usr/local/cuda-6.5/lib64
export PATH=${CUDA_BIN}:$PATH
export LD_LIBRARY_PATH=${CUDA_LIB}:$LD_LIBRARY_PATH

4、安装Protocol Buffers

官网下载,我使用protobuf-2.6.1.tar.gz。

cd至下载路径

解压

$ tar zxvf protobuf-2.6.1.tar.gz

进入解压目录

$ cd protobuf-2.6.1

安装源码,配置、编译、编译检查、安装

$ ./configure
$ make
$ make check
$ make install

增加环境变量

$ sudo vi .bashrc
#在最下面加上
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

测试

$ protoc --version
libprotoc 2.6.1

错误 ImportError: No module named google.protobuf

cd到解压后的protobuf文件夹下的python文件夹,执行

 

sudo python setup.py install

错误 error: package directory 'google/protobuf/compiler' does not exist

 

解决办法:在google/protobuf/下创建compiler文件夹

检查

 

sudo python setup.py test

错误 ImportError: No module named descriptor_cpp2_test

 

无法解决!!!求教!!(但貌似对结果无影响)
5、cudamat编译

$ cd cudamat文件夹
$ make

deepnet作者上传的cudamat有所缺失,下载cudamat工具包并make编译,将编译后文件夹中的learn.py、learn.pyc(我这没有)和 libcudalearn.so复制到deepnet的cudamat文件夹下即可。现在cudamat已经改版,需要文件的请联系我。

增加cudamat环境变量

 

$ sudo vi .bashrc
在最下面加上(这里下载的deepnet名字为deepnet-master,我将其改为deepnet,并且里面还有一个deepnet子文件夹)
export PATH=/home/username/deepnet/cudamat:$PATH
export LD_LIBRARY_PATH=/home/username/deepnet/cudamat:$LD_LIBRARY_PATH
export PYTHONPATH=${PYTHONPATH}:/home/username/deepnet/deepnet
export PYTHONPATH=$PYTHONPATH:/home/username/deepnet

6、下载MNIST数据集,cd到deepnet/deepnet/examples目录下运行

 $ python setup_examples.py  <path to mnist dataset>  <output path>

这句主要是配置数据集和输出文件的位置。到examples下的任一目录执行可执行文件runall.sh,如在deepnet/deepnet/examples/rbm下执行:

 

$ sh runall.sh


 




遇到的问题

1、deepnet的python需要matplotlib包,而matplotlib包又依赖于freetype(提供读取TTF字体文件)和libpng(提供加载和保存PNG文件),因此这两者需要先安装。我在装freetype时遇到了问题。

运行runall.sh时,显示“No such file or directory: u'tmp/matplotlib-username/frontList.cache'”

原因:缺失matplotlib-username文件夹(username是我用户名)

解决:

 

$ mkdir /tmp/matplotlib-username


2、运行runall.sh时,出现“No GPU board available”

原因:deepnet将GPU关闭

解决:更改 /deepnet/deepnet下的trainer.py文件,将main中的两个if :  board = LockGPU()和board = FreeGPU()注释掉,用以下两行来替代GPU的初始化设置,放在main第一行:

 

cm.cuda_set_device(0)
cm.cublas_init()

 

3、运行cudamat出现错误,如下图

Ubuntu14.04+CUDA6.5环境下神经网络工具包Deepnet配置_第1张图片

原因:我的机器GPU为GTX750,CUDA是6.5,作者使用的GPU或CUDA版本比较低,当在cudamat下make的时候,不兼容。

解决:更改Makefile文件

vi Makefile

我的Makefile如下

Ubuntu14.04+CUDA6.5环境下神经网络工具包Deepnet配置_第2张图片

即增加了35和50两行。

 

你可能感兴趣的:(ubuntu)