zoukankan      html  css  js  c++  java
  • Ubuntu14.04+caffe+CPU

           刚刚在上篇博客记录了windows10下GPU版本caffe的安装,正准备跑跑论文里的代码,发现好多命令都是.sh命令,这是linux系统的脚本文件。不能直接在windows下运行,于是我想把.sh转换为windows下可执行的bat文件,但是又发现代码需要将数据转换为leveldb格式。而leveldb不能直接在windows下编译,还需配置,比较繁琐。而lmdb可以直接在windows下编译。下面是两者区别:

    • 它们都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库。
    • 虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允许多种训练模型同时读取同一组数据集。
    • 因此lmdb取代了leveldb成为Caffe默认的数据集生成格式

          说了这么多,就是windows确实不方便,于是想搞一波linux。但是不太熟悉,所以没有搞双系统,先在虚拟机上练练手,尽管虚拟机不能用GPU。

    我的配置:VMware-workstation-full-12.00(12貌似更契合win10)、ubuntu-14.04-desktop-amd64(14LTS版本和16LTS版本相对稳定,amd64即64位版本)

    虚拟机和ubuntu安装比较简单,基本是傻瓜式安装。

    安装python接口的caffe:(无GPU)、无cuda(自然更没有cudnn),无opencv(暂不需要)

    1.安装必要的环境

    sudo apt-get update   #更新软件列表
    sudo apt-get upgrade #更新软件
    sudo apt-get install build-essentia #安装build essentialsl
    sudo apt-get install linux-headers-'uname -r' #安装最新版本的kernel headers

     

    2.安装所需要的依赖包

    sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler  
    sudo apt-get install --no-install-recommends libboost-all-dev  
    sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev 
    sudo apt-get install libatlas-base-dev

     

    3.安装必要的库

    sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev  
    sudo apt-get install libatlas-base-dev  

     

    4.下载caffe并配置python

    网上的大部分方法是:

    cd ~   
    git clone https://github.com/BVLC/caffe.git #克隆caffe到本地,并命名为caffe
    cd caffe
    cat python/requirements.txt | xargs -L 1 sudo pip install  安装caffe/python/requirements.txt里面所有要求的库

     我就被坑在这里了,上面的命令用到了pip。所以先装pip,即执行sudo apt-get install python-pip

     但是装好pip后,上面安装requirements.txt里的库时,速度很慢,基本都是timeout的错误,网上好多修改配置的教程,但我没有设置成功。。

     所以我采取下面的方法,即把requirements.txt里的库拿出来,挨个下载:

    sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage 
    python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython  

     上面就算caffe/python所有所需要的库。装好后没有报错即可,可以测试下:终端输入python,然后任意输入import scipy或import Cython都无错。

     

    5.配置并编译caffe

    修改Makefile.config.example

    cd caffe
    cp Makefile.config.example Makefile.config

     上面命令意思:将caffe文件夹里的Makefile.config.example 复制为Makefile.config

     然后进入Makefile.config文件夹,改些东西:

    #去掉CPU_ONLY:=1的注释
    #在PYTHON_INCLUDE下把
    #  /usr/lib/python2.7/dist-packages/numpy/core/include
    #改为
    #  /usr/local/lib/python2.7/dist-packages/numpy/core/include

    下面开始编译caffe:

    进入caffe文件夹根目录下,eg:~/caffe$ ,进行如下操作:

    make all
    
    make pycaffe
    
    make distribute
    
    make test

     这个运行比较久。

     

    6.修改环境路径

    将PYTHONPATH写入.bashrc中:

    echo 'export PYTHONPATH =$PYTHONPATH:/home/'username'/caffe/python'>>~/.bashrc
    source ~/.bashrc

    根据每个人不同的路径加以修改,例如我的是 'export PYTHONPATH=$PYTHONPATH:/home/lps/caffe/python'

     

    7.测试

     

    运行MNIST:

    1)按照官网先准备数据集:

    cd ~/caffe #将终端定位到Caffe根目录
    ./data/mnist/get_mnist.sh #下载MNIST数据库并解压缩
    ./examples/mnist/create_mnist.sh #将其转换成Lmdb数据库格式

    2)编辑lenet_solver的solver_mode模式从GPU改为CPU:

    vim ./examples/mnist/lenet_solver.prototxt
    #改为solver_mode: CPU

    3)训练模型

    cd $CAFFE_ROOT
    ./examples/mnist/train_lenet.sh

    4)训练结果

     

  • 相关阅读:
    垃圾回收的可触及性
    常用的垃圾回收算法
    石子归并(区间dp 模板)
    D. Zero Quantity Maximization ( Codeforces Round #544 (Div. 3) )
    Parity game(带权并查集+离散化)
    Supermarket(贪心/并查集)
    D. Nested Segments(树状数组、离散化)
    dijkstra,belllman-ford,spfa最短路算法
    重载符
    Electrification Plan 最小生成树(prim+krusl+堆优化prim)
  • 原文地址:https://www.cnblogs.com/king-lps/p/6575485.html
Copyright © 2011-2022 走看看