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发布模块的步骤分享
Feb 21 Python
详解Python中的序列化与反序列化的使用
Jun 30 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
Python3计算三角形的面积代码
Dec 18 Python
numpy返回array中元素的index方法
Jun 27 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
Python图片的横坐标汉字实例
Dec 04 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
Mar 09 Python
如何用Python进行时间序列分解和预测
Mar 01 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
浅谈PHP语法(1)
2006/10/09 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
判断日期是否能跨月查询的js代码
2014/07/25 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
python解析json实例方法
2013/11/19 Python
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
python flask中静态文件的管理方法
2018/03/20 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
在django中,关于session的通用设置方法
2019/08/06 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
一套.net面试题及答案
2016/11/02 面试题
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
毕业研究生的自我鉴定
2013/11/30 职场文书
英语生日邀请函
2014/01/23 职场文书
运动会获奖感言
2014/02/11 职场文书
出国英文推荐信
2014/05/10 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
校园开放日新闻稿
2015/07/17 职场文书
谢师宴学生致辞
2015/07/27 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL