在 Mac OS X 上安装 TensorFlow

发布于 2018-10-12 17:46 1176 字 6 min read

前端项目通过bridge获取客户端资源,客户端直接返回response对象Win11 光标变白消失解决方案(浏览器开启硬件加速后,在鼠标滑到文本处出现)Terminal里用option/alt + 鼠标点击,就可以让光标到指定位置Duff's Device为 UIControl 实现线程安全的 Block 事件扩展:原理与实践前端代码规范设计模式k8s前端项目利用nginx部署项目不停机Vue3+Vite+history模式+Nginx 部署二级路径iOS开发工具常用代码模板2——数据结构常用代码模板1——基础算法iOS:特殊符号大全HomeBrew 更新报错“fatal- Could not resolve HEAD to a revision”SwiftUI基本控件代码大全——1.欢迎进入软件构建的世界C++ STL简介LeetCode 70 爬楼梯(青蛙跳台阶)深入理解计算机系统(第二版) 家庭作业 第二章Swift Module 如何被全局引用LeetCode 398 随机数索引Vue 的一些指令和缩写LeetCode 486 Predict the Winner(预测赢家)浅谈iOS中的weakCocoaPods组件化——OC/Swift动静态库混用OpenGL 术语当对象接收到不能处理的消息时调用的方法命令行通过ffmpeg剪切视频iOS:如何在UITableView调用reloadData刷新结束后再同步执行后续操作统计iOS工程代码行数CMake 入门及常用变量指令手册LeetCode 6 ZigZag Conversion(Z字转换)LeetCode 106 Construct Binary Tree from Inorder and Postorder Traversal(由中序和后序遍历建立二叉树)LeetCode 5 Longest Palindromic Substring(最长回文字串)LeetCode 8 String to Integer (atoi)Objective-C Type EncodingsObjective-C:为什么分类中不能直接添加属性MeshLab数据结构与算法解析习题2.23数据结构与算法解析习题2.19数据结构与算法解析习题2.16数据结构与算法解析习题2.14数据结构与算法解析习题2.13数据结构与算法解析习题2.12数据结构与算法解析习题2.11:二分查找数据结构与算法解析习题2.10:霍纳法则(Horner's rule)数据结构与算法解析习题2.7数据结构与算法解析习题1.3数据结构与算法解析习题1.2数据结构与算法解析习题1.1centos7 mysql数据库安装和配置Fishhook-源码分析解决Mac下 Cornerstone 无法查看SVN日志的问题UIButton扩大点击范围以及关于响应者链条的思考UILabel中文带行间距的处理,限制行数,计算高度等UITableview调用reload方法时抖动问题C语言指针小结C语言数据类型和const、static关键字iOS 截取整个 scrollview 图片WxWidgets类列表objc源码分析-runtime-classiOS自动化埋点的实现iOS平台编译Ogre游戏引擎库在 Mac OS X 上安装 TensorFlowiPhone 刘海机型UI适配(X、Xs、Xs Max、Xr)关于C语言中的union虚拟机 Linux 上编 slice3r perl Build.PL 报错iOS 沙盒与 BundleCOCOAPODS技巧-创建私有仓库iOS脚本打包 ipa(.app转.ipa)Objective-C 中禁止调用指定的方法iOS 关于 UITextField 的字数限制升级 Mac OS 10.13 High Sierra 后 ruby 报错iOS 框架学习-AsyncSocketSQL语句OC优缺点以及常见bugUIViewController 的生命周期runtime——运行时简单使用iPhone6 Plus上面神秘的缝隙CocoaPods安装和使用教程(更新至Mac High Sierra)UIApplicationiOS 网络小结NSString的各种处理HTTP请求报文和HTTP响应报文,以及工作原理Vim 快捷键整理OC中nil 、NULL、 Nil 、NSNull的区别GCD 使用指南iOS常用数据类型转换关于NSNotificationCenterGit 命令MAC OS 常用技巧Description方法和NSLog函数代码重构OC单例宏Block in Objective-CObjective-C 语法 3Objective-C 语法 2Objective-C 语法 1
注意:从 1.2 版本开始,在 Mac OS X 上 TensorFlow 不再支持 GPU。 首先在官网上看一下 TensorFlow 运行环境需要哪个版本的 python,目前(2018-10-6)是 Python 2.7, Python 3.4, 3.5, 3.6。我现在通过 homebrew

注意:从 1.2 版本开始,在 Mac OS X 上 TensorFlow 不再支持 GPU。

首先在官网上看一下 TensorFlow 运行环境需要哪个版本的 python,目前(2018-10-6)是 Python 2.7, Python 3.4, 3.5, 3.6。我现在通过 homebrew 安装的 python 已经是3.7了,安装完后,pip找不到 TensorFlow,所以先看一下本地的环境是否符合可以少走一些弯路。

我是通过 virtualenv 安装的环境,官网也是默认用这个。virtualenv 是一个和其它 Python 项目开发隔离的虚拟 Python 环境,在同一台机器上不会干扰也不会被其它程序影响。virtualenv 安装过程中,你不仅仅安装了 TensorFlow 还有它的所有依赖包。(事实上这很简单)要开始使用 TensorFlow,你需要“启动” virtualenv 环境。总而言之,virtualenv 提供了一个安全可靠的 TensorFlow 安装和运行机制。

使用 virtualenv 安装

打开终端(一个 shell),你将在这个终端中执行随后的步骤

安装 pip

通过命令安装 virtualenv

$ pip install --upgrade virtualenv  # for Python 2.7
$ pip3 install --upgrade virtualenv # for Python 3.n

执行以下任一命令创建虚拟环境:

$ virtualenv --system-site-packages ~/tensorflow # for Python 2.7
$ virtualenv --system-site-packages -p python3 ~/tensorflow # for Python 3.n

~/tensorflow 是 virtualenv 环境的根目录,因为我这个是要给tf用的,所以就起这个名字了,可以根据个人情况更改。

执行任一命令激活虚拟环境:

$ source ~/tensorflow/bin/activate      # If using bash, sh, ksh, or zsh
$ source ~/tensorflow/bin/activate.csh  # If using csh or tcsh 

上面的 source 命令应该将提示符改成了下面这样:

(tensorflow)$ 

如果已经安装了 pip 8.1 或者更新的版本,执行以下任一命令在激活的虚拟环境中安装 TensorFlow 及其所有依赖:

$ pip install --upgrade tensorflow      # for Python 2.7
$ pip3 install --upgrade tensorflow     # for Python 3.n

安装完成后,验证你的安装是否工作正常。

如果要卸载 TensorFlow,执行下面的命令

$ pip uninstall tensorflow    # Python 2.7
$ pip3 uninstall tensorflow   # Python 3.n 

可选,如果安装失败了(一般是因为你使用了低于 8.1 版本的 pip),执行以下任一命令在激活的虚拟环境中安装 TensorFlow:

$ pip install --upgrade tfURL   # Python 2.7
$ pip3 install --upgrade tfURL  # Python 3.n 

tfURL 是 Tensorflow 包的 URL,准确的 tfURL 值因操作系统和 Python 版本而异,在[这里](https://www.tensorflow.org/install/pip找到和你系统相关的 tfURL 值。例如,你要在 Mac OS X 上安装 Python 3.6 对应的 Tensorflow 版本,在虚拟环境中安装 Tensorflow 就执行下面的命令:

$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.11.0-py3-none-any.whl

注意,每打开一个新的 shell 使用 TensorFlow 都必须激活虚拟环境。如果当前虚拟环境没有被激活(也就是提示符不是 tensorflow),执行以下任一命令:

$ source ~/tensorflow/bin/activate      # bash, sh, ksh, or zsh
$ source ~/tensorflow/bin/activate.csh  # csh or tcsh 

你的提示符变成下面这样说明 tensorflow 环境已经激活:

(tensorflow)$ 

当虚拟环境激活后,你可以在这个 shell 中运行 TensorFlow 程序。如果你不再使用 TensorFlow,可以通过下面命令退出环境:

(tensorflow)$ deactivate 

如果你想卸载 TensorFlow,简单地移除你创建的目录。例如:

 rm -r ~/tensorflow 

运行一个小的 TensorFlow 程序

在一个 shell 中执行 Python:

python3

在 python 交互式 shell 中输入以下小程序:

# Python

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

如果系统输出以下内容,你可以开始写 TensorFlow 程序了:

Hello, TensorFlow!

如果你不熟悉 TensorFlow,参考 Getting Started with TensorFlow

常见错误

SSE4.1

如果遇到警告

The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.

这个问题的出现主要是和tensorflow的安装方式有关系,使用pip安装就会出现对代码编译优化的问题,使得你电脑有SSE4.1等命令,却无法调用来加速训练,所以最好是安装时候多费点事用源码编译,能够解决这个报错提示的问题,同时也能在以后的项目中发挥本机CPU的性能进行加速训练。

如果不想编译源码可以在代码中加入

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

便不会出现警告了。

注意《TensorFlow 实战》中的代码版本

应该会有人是在看《TensorFlow 实战》来学习tf的吧,注意该书的代码版本是1.0,所以安装tf版本要对应,否则一些接口可能会失效(其实第一个demo已经跑不来了)。

用一下命令或者直接在官网找1.0的URL都可以。

$ pip3 install tensorflow==1.0.0   # Python 3.n