本文将指导你如何在自己的Mac上部署Theano + Keras的深度学习开发环境。

如果你的Mac不自带NVIDIA的独立显卡(例如15寸以下或者17年新款的Macbook。具体可以在“关于本机->系统报告->图形卡/显示器”里查看),那么你可能无法在这台Mac上使用GPU训练深度学习模型。不过这并不值得遗憾。事实上,我在自己的Macbook上(15-inch,Early 2013,NVIDIA GeForce GT 650M 1024 MB)做了一个简单的测试:在mnist数据集上训练CNN模型时,GPU模式相对于CPU模式仅节省了1/3的时间。这可能要归咎于Mac上赢弱的显卡。相比之下,我更推荐购买一台有着强劲性能的显卡的PC本(比如某些游戏本)来搭建深度学习的开发环境,或者是直接租赁AWS的Instance服务。

下面步入正题。

安装GPU开发环境

几乎所有的主流深度学习框架在使用GPU进行模型训练时都依赖于两个底层环境:CUDA和cuDNN。前者是一个使用GPU进行并行计算的平台,后者是一个封装了使用GPU加速神经网络计算的library。

安装CUDA

  1. 确保你的显卡被CUDA所兼容。前往CUDA-capable GPU检查可用的显卡型号。

  2. 接下来,安装xcode(通过App Store)和命令行工具:xcode-select --install。这一步会自动安装clang编译器,可以在命令行里输入:/usr/bin/cc --version进行验证。

    clang编译器也是安装Theano的预备环境之一。

  3. 前往官网下载并安装CUDA8.0(dmg安装包)。注意选择相应的平台。这一步会同时安装CUDA driver和CUDA toolkit。

  4. 配置环境变量。打开~/.bash_profile,输入四行命令:

    export CUDA_ROOT=/Developer/NVIDIA/CUDA-8.0

export PATH=\(CUDA_ROOT/bin\){PATH:+:\({PATH}}
export DYLD_LIBRARY_PATH=\)CUDA_ROOT/lib\({DYLD_LIBRARY_PATH:+:\){DYLD_LIBRARY_PATH}}

export LD_LIBRARY_PATH=\(CUDA_ROOT/lib:\)LD_LIBRARY_PATH

```

其中,环境变量CUDA_ROOT给Theano指定了CUDA的安装目录,也可以被设置为`/usr/local/cuda`(这两个路径下的文件均通过软链接被link到了一起)。

配置完成后,退出编辑器,`source ~/.bash_profile`并执行`nvcc -V`验证CUDA的安装是否正常。

安装cuDNN

  1. 前往官网下载cuDNN压缩包。注意选择合适的平台。我下载的是cuDNN5.1 for CUDA8.0(截止到17年4月,Theano尚不支持cuDNN6.0)。

  2. 解压缩下载的文件,将include目录下的*.h文件复制到$CUDA_ROOT/include目录下;将lib目录下的*.so文件复制到$CUDA_ROOT/lib目录下。

至此,完成了GPU开发环境的基本部署。

安装Theano

Theano的安装极其简单:

  1. 首先,前往Miniconda安装Conda

  2. 使用Conda安装第三方依赖(“<>”里为可选包):

    conda install numpy scipy mkl <nose> <sphinx> <pydot-ng>
  3. 使用Conda安装Theano(如果出现网络连接异常,也可以使用pip进行安装。参见官网安装指南):

    conda install theano pygpu

安装Keras

Keras是一个建立在Theano和TensorFlow基础上,封装了大量底层接口,方便研究人员快速搭建模型原型的深度学习开发框架。它提供了pip和从源码直接安装两种方式。

使用pip安装:

sudo pip install keras

从源码直接安装:

git clone https://github.com/fchollet/keras.git
cd keras
sudo python setup.py install

Keras默认以TensorFlow为底层计算引擎。第一次执行import keras命令后,会生成~/.keras/keras.json文件。打开这个文件,将"backend": "tensorflow"修改为"backend": "theano",即完成了后端计算引擎到Theano的切换。

至此,一个基本的深度学习开发环境已搭建完成。重启电脑以确保所有配置均已生效。

环境测试

我们可以运行一些demo来测试环境的安装是否正常。

从Github上下载Keras的源码,进入examples子目录,输入命令:

THEANO_FLAGS=mode=FAST_RUN python mnist_cnn.py

该命令将以CPU模式在mnist数据集上训练CNN模型。

输入命令:

THEANO_FLAGS='mode=FAST_RUN,device=cuda,floatX=float32,optimizer_including=cudnn' python mnist_cnn.py

该命令将以GPU模式(并使用cudnn加速)在mnist数据集上训练CNN模型。

如果一切正常,你将看到类似下图的屏幕输出:

我在自己的Macbbok Pro(15寸,13年初,GT 650M的1024MB显卡)上分别测试了CPU,GPU,GPU with cuDNN三种模式下CNN模型(mnist数据集)的训练性能,其结果如下(单位:秒):

出乎意料的是,如果没有cuDNN的加速,Mac上GPU的计算性能远不如CPU!而即便使用了cuDNN的加速,模型的训练也只不过缩短了1/3的时间。因此,如果想认真地玩一玩深度学习模型,还是建议上高性能的显卡,或者直接用AWS的GPU服务吧!

深度学习开发环境搭建教程(Mac篇)的更多相关文章

  1. XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相)

    XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相) 2014-08-22 21:06 网上能找到的关于Delphi XE系列的移动开发环境的 ...

  2. 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)

    前言: 本篇文章主要讲解的是在学习人工智能之深度学习时所学到的知识和需要的环境配置(安装Anaconda3和TensorFlow2步骤详解),以及个人的心得体会,汇集成本篇文章,作为自己深度学习的总结 ...

  3. 虚拟机IOS开发环境搭建教程

    来源:http://www.cnblogs.com/xiaoyaoju/archive/2013/05/21/3091171.html 安装条件: 硬件:一台拥有支持虚拟技术的64位双核处理器和2GB ...

  4. windows下vue.js开发环境搭建教程

    这篇文章主要为大家详细介绍了windows下vue.js开发环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中 ...

  5. supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境

    开发环境介绍 在SuperVessel云上,我们为大家免费提供当前火热的caffe深度学习开发环境.SuperVessel的Caffe有如下优点: 1) 免去了繁琐的Caffe环境的安装配置,即申请即 ...

  6. 从零开始在ubuntu上配置深度学习开发环境

    从零开始在ubuntu上配置深度学习开发环境 昨天一不小心把原来配置好的台式机的开发环境破坏了,调了半天没有调回来,索性就重装一次ubuntu系统.这篇文章主要记录一个简单的.‘傻瓜式’教程. 一.U ...

  7. XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相)

    XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相) 2014-08-15 22:04 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表 ...

  8. Web开发环境搭建 Eclipse-Java EE 篇

    Web开发环境搭建 Eclipse-Java EE 篇 [原创内容,转载注名出处] 1. 下载和安装 1.1 下载JDK 在Java官方网站下载最新版本的 Java SE:  http://www.o ...

  9. 转---详细的Android开发环境搭建教程

    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程 引言   在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立A ...

随机推荐

  1. 百度地图API新手入门

    最近,共享单车着实火了一把,市场竞争也是异常的激烈,百花争艳,百家争鸣,群雄逐鹿,最后鹿死谁手,现在还不得而知,不过可以肯定的是细节决定成败,更重要的还在于用户的体验. 用过的同学们都会知道,打开共享 ...

  2. wemall开源商城免费商城系统部分代码(内含代码地址)

    wemall开源商城免费商城系统部分代码,下面分享部分代码,供学习者学习: 开源版把install文件夹下的install.lock删除之后可进行自动安装 后台访问地址:http:// www.xxx ...

  3. Fibonacci数列前n项值的输出(运用递归算法)

    1.斐波那契数列: 又称黄金分割数列,指的是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 在数学上,斐波纳契数列以如下被以递归的方法 ...

  4. 设置border属性变化不同形状:三角形、圆形、弧形 2017-03-20

    一.通过设置边框----正方形.三角形 <style> .c{ height: 0px; width: 0px; border-top: 50px solid red; border-ri ...

  5. Flex表格中添加图片

      Flex4.5中datagrid加入图片显示image <s:DataGrid id="maingrid" x="0" y="36" ...

  6. java中有符号和无符号数据类型发生转换

    package com.itheima.test01;/* * byte short int long float double 是有符号位的数 * char boolean 是无符号位的数 * 补码 ...

  7. HTML Socket实现 .NET

    HTML5 拥有许多引人注目的新特性,如 Canvas.本地存储.多媒体编程接口.WebSocket 等等.虽然现在大家把它捧的很火的样子,但是个人认为它还需要其他平台的支持才能真正的"火起 ...

  8. 基于微软开发平台构建和使用私有NuGet托管库

    本篇blog包含使用TFS2017,VS2017等平台和工具搭建和使用NuGet库等基本过程,为团体提供更加自动化和高效的研发活动支持. 作为以产品线或者以专属业务为扩展的项目类型的软件研发团体,都会 ...

  9. 【G】开源的分布式部署解决方案文档 - 使用手册

    G.系列导航 [G]开源的分布式部署解决方案 - 导航 已知问题 导航没有联动 因为权限只是做了基础的登录校验,考虑到后面导航要跟权限关联上暂时是写死的. 只有部分界面使用了Vue.js 因为刚开始没 ...

  10. (转)关闭iptables和SELinux

    1. 关闭SELinux setenforce 0   #临时关闭 编辑/etc/selinux/config,找到SELINUX 行修改成为:SELINUX=disabled:     #永久关闭, ...