• 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出现错误,如下图

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

    解决:更改Makefile文件

    vi Makefile
    

    我的Makefile如下


    即增加了35和50两行。

  • 相关阅读:
    雅虎公司C#笔试题
    DES
    从Socket看Visual C#.Net网络程序开发
    进一步接触C#委托与事件
    学习C#消息:循序渐进
    解惑答疑:C#委托和事件
    利用Visual C#实现Windows管道技术1
    使用命名管道通过网络在进程之间进行通信
    C#体验编程技术 类与对象
    学习C#实现HTTP协议:多线程文件传输
  • 原文地址:https://www.cnblogs.com/llxrl/p/4338891.html
Copyright © 2020-2023  润新知