TensorFlow在MAC环境下的安装及环境搭建


Posted in Python onNovember 14, 2017

给大家分享一下TensorFlow在MAC系统中的安装步骤以及环境搭建的操作流程。

TensorFlow 底层的图模型结构清晰,容易改造;支持分布式训练;可视化效果好。如果做长期项目,接触较大数据集的话,TensorFlow很适用,而且谷歌也在不断优化完备它,对于使用深度学习朋友,TensorFlow是一个很好的工具。

在学习了一段时间台大李宏毅关于deep learning的课程,以及一些其他机器学习的书之后,终于打算开始动手进行一些实践了。

感觉保完研之后散养状态下,学习效率太低了,于是便想白天学习,晚上对白天学习的知识做一些总结和记录,如果有不妥的地方,欢迎大家批评指教,共同进步。

一、深度学习框架的选择

随着深度学习日趋火热,技术的逐渐兴起,各种深度学习框架也层出不穷。

目前使用普遍的框架有Tensorflow、Caffe、PyTorch、Theano、CNTK等,那么在这么多框架中该如何选择呢?

笔者作为一个初学者,架不住Tensorflow的名气之大,所以最开始便选择了Tensorflow。当然不仅仅只是因为名气大,Tensorflow作为谷歌主持的开源项目,它的社区热度目前看来是旺盛的,而且现在也最为流行。听说,它是在谷歌总结了DistBelief的经验教训上形成的;它运行高效、可扩展性强,可以运行在手机、普通电脑、计算机群上。

下面再简单介绍一下其他深度学习框架的特点:

(1) Caffe:卷积神经网络框架,专注于卷积神经网络和图像处理,因为是基于C++语言,所以执行速度非常的快。

(2) PyTorch:动态computation graph!!!(笔者学习Tensorflow一段后,便会转学PyTorch试试看)

(3) Theano:因其定义复杂模型很容易,在研究中比较流行。

(4) CNTK:微软开发的,微软称其在语音和图像识别方面比其他框架更有优势。不过代码只支持C++.

Tensorflow的一些特性就不再说了,网络上相关资料也有很多。

下面就介绍一下Tensorflow的安装,笔者的安装顺序是首先安装Anaconda、然后安装Tensorflow、再安装Pycharm。

二、安装Anaconda

安装环境:
TensorFlow在MAC环境下的安装及环境搭建

虽然笔者用的是mac,自带了Python,但是还是先安装了Anaconda(点击进入官网)。因为它集成了很多Python的第三方库,而且可以方便的管理不同版本的Python,在不同版本的Python之间切换。而且Anaconda是一个科学计算环境,在电脑上安装完Anaconda之后,除了相当于安装了Python,也安装好了一些常用的库。

TensorFlow在MAC环境下的安装及环境搭建

笔者安装的是Python 2.7版的Anaconda,在安装好Anaconda之后,就已经安装好了Python和一些常用的库了。此外,还自动安装了Spyder。

Spyder是Python一个简单的集成开发环境,和其他的Python开发环境相比,它最大的优点就是模仿MATLAB的“工作空间”的功能,可以很方便地观察和修改数组的值。

在终端中输入Spyder就可以打开它了,如下图所示:

TensorFlow在MAC环境下的安装及环境搭建
TensorFlow在MAC环境下的安装及环境搭建

但是笔者更喜欢使用Pycharm作为开发环境

三、建立、激活、安装Tensorflow

打开终端,在上面输入:

conda create -n tensorflow python=2.7

 

TensorFlow在MAC环境下的安装及环境搭建

然后等执行完毕之后,再执行:

source activate tensorflow

 

至此就激活了运行环境。

然后再执行pip install tensorflow以进行Tensorflow的安装。

然后再执行以下Hello Tensorflow代码测试Tensorflow是否安装成

import tensorflow as tf hello = tf.constant('Hello Tensorflow!') sess = tf.Session() print(sess.run(hello)) a = tf.constant(10) b = tf.constant(32) printf(sess.run(a+b))

 

如果正常的话会提示:

Hello Tensorflow! 42

四、PyCharm IDE

一直使用终端开发的话,实在是太过难用了。笔者选择了PyCharm作为开发环境,官网链接。这里笔者用的是社区版(free)。

(1)首先新建一个Pycharm的工程
TensorFlow在MAC环境下的安装及环境搭建

因为是做Tensorflow的开发,所以这里我们只需要选择图中所示的interpreter即可。

~/anaconda2/envs/tensorflow/bin/python

这样就把Tensorflow环境包括了进来,超级方便。

如果平时开发,想用一些轻量级的环境,就选择其他Python解释器就可以了。

(2)运行一个demo进行测试

import tensorflow as tf hello = tf.constant('Hello, Tensorflow!') sess = tf.Session() print(sess.run(hello)) a = tf.constant(66) b = tf.constant(88) print(sess.run(a + b))

TensorFlow在MAC环境下的安装及环境搭建

如果出现以下提示,就说明成功了,可以开始接下来的学习了~

Hello, Tensorflow! 154

五、总结

至此,我们便在机器上安装好了Tensorflow以及其开发环境。

总的来说,只需要以下几步:

安装Anaconda 通过conda建立Tensorflow运行环境 激活Tensorflow运行环境 安装Pycharm IDE

大家在本地MAC上安装的时候,很多坑是需要留意的,我们把经常遇到的坑给大家做了总结,希望你在安装的时候尽量的避免这些地方。

一般都是服务器上直接开干,但是也会有人在本机上装一下的,这里写下,tensorflow在mac上安装的坑,给后来者一个参考

1 安装教程

直接去官网按照说明安装就好,如果要安装GPU版本,先安装官网上的mac gnu设置教程,装下cud相关的工具,最后有个sample跑过了就算gpu计算环境配置成功

2 第一个坑

按照官网上的教程,直接使用pip安装方法就好,注意pip版本要大于8.1,然后你直接sudo pip install tensorflow (不加sudo会权限不够),然后一般会不通过,提示卸载numpy不成功。 

我认为是这样的原因:numpy是mac系统默认装的库,并且设置有保护,所以无法卸载,然后tensorflow需要更高版本的numpy,所以就不成功啦

解决方法如下:

去除mac系统的保护,1 重启电脑 2 重启看见苹果logo了,按住command + R ,进入恢复模式 3 然后在上面的终端工具里面,进入终端 4 在终端输入 csrutil disable 5 重启,然后再次执行pip安装 还不明白的话看这篇博客

3 第二个坑

操作成功的话,就成功安装啦,然后,进去python编辑行 

输入 import tensorflow 然后你会发现,RuntimeError: module compiled against API version 0xa but this version of numpy is 0x9 这个错误,说是你bumpy版本太低,这个时候表示日狗,刚才去除了保护,安装的时候已经bumpy更新到最新版了,查看numpy的版本也是最新版,查看版本方法可自行百度。 

解决这个坑的方法如下:

import numpy
numpy.__path__
#你会发现出现了一个包含XXX/Framework/xxx的路径,没错这还是系统安装的那个numpy的路劲,
#虽然你升级了,然是导入包的时候还是按照之前的路劲导入,所以版本过低,这个时候只需要把老的路径去掉
#就像这样,在终端中(不是python编辑模式下)输入:
sudo mv /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy_old

然后再次进入python编辑模式,输入

import numpy
numpy.__path__
#这个时候,路劲就变成了,我们升级的那个numpy的路径了,是个XXX/local/xxx

然后你再import tensorflow 就没问题啦,就可以去输出hello world 了

Python 相关文章推荐
Python strip lstrip rstrip使用方法
Sep 06 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
python爬取足球直播吧五大联赛积分榜
Jun 13 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
Django 响应数据response的返回源码详解
Aug 06 Python
python retrying模块的使用方法详解
Sep 25 Python
python opencv实现gif图片分解的示例代码
Dec 13 Python
如何在django中添加日志功能
Feb 06 Python
Python Selenium截图功能实现代码
Apr 26 Python
windows支持哪个版本的python
Jul 03 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 #Python
Python中import机制详解
Nov 14 #Python
AI人工智能 Python实现人机对话
Nov 13 #Python
Python编程实现蚁群算法详解
Nov 13 #Python
Python编程实现粒子群算法(PSO)详解
Nov 13 #Python
人工智能最火编程语言 Python大战Java!
Nov 13 #Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 #Python
You might like
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
php intval函数用法总结
2019/04/14 PHP
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
javascript中获取元素标签中间的内容的实现方法
2016/10/08 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
Python基础语法(Python基础知识点)
2016/02/28 Python
Python 数据结构之队列的实现
2017/01/22 Python
Python装饰器用法示例小结
2018/02/11 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
Python的collections模块真的很好用
2021/03/01 Python
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
自学考试自我鉴定范文
2013/09/26 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
班组拓展活动方案
2014/08/14 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
Python 内置函数速查表一览
2021/06/02 Python
opencv检测动态物体的实现
2021/07/21 Python