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中使用OpenCV进行人脸检测的例子
Apr 18 Python
简化Python的Django框架代码的一些示例
Apr 20 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 Python
Python注释详解
Jun 01 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
Nov 24 Python
python实现旋转和水平翻转的方法
Oct 25 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python生成随机验证码代码实例解析
Jun 09 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
OpenCV 图像梯度的实现方法
Jul 25 Python
什么是Python装饰器?如何定义和使用?
Apr 11 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 Squid中可缓存的动态网页设计
2008/09/17 PHP
php 定界符格式引起的错误
2011/05/24 PHP
php中session退出登陆问题
2014/02/27 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
使用TextRange获取输入框中光标的位
2006/10/14 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
js使用心得分享
2015/01/13 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
[01:02:30]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第三场 8.22
2019/09/05 DOTA
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
python 实现二维列表转置
2019/12/02 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
sort命令的作用和用法
2012/11/04 面试题
十岁生日家长答谢词
2014/01/17 职场文书
企业车辆管理制度
2014/01/24 职场文书
考试违纪检讨书
2014/02/02 职场文书
气象学专业个人求职信
2014/03/15 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
学生打架检讨书
2014/10/20 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android