环境
mac catalina 10.15.1
为什么要从源代码编译?
1 AVX2警告
如果直接“pip3 install tensorflow"的话,很可能出现如下警告:
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
此种警告的原因是pip安装的都是x86编译的,而大多系统都是64位,网上对于此种警告有两种解决方法,一种是在.py加上两行代码屏蔽警告,一种就是找已经编译好的.whl文件然后pip3 install .whl文件就行,
编译好的文件github链接。
但是这毕竟是别人编译的,更新速度不是很快,比如就没有支持最新catalina系统的(20191112),
故笔者参考官网教程从源代码编译,由于一些细节问题官网教程没有详尽解释,故特此说明
2 系统兼容性警告
对于catalina系统,可能现有的已经编译的安装包不太适用。
安装过程
1 对于mac OS,需要安装homebrew(过程自查)
2 安装python3(apt(linux)或者brew(mac)安装)
注意mac有自带的python2,还有xcode带来的python2和3,强烈建议用brew安装并更改默认python3运行路径为/usr/local/bin/python3(brew安装下的路径)
3 安装 tensorflow pip依赖项
使用虚拟环境时,省略掉–user参数
pip3 install -U pip six numpy wheel setuptools mock future
pip3 install -U keras_applications
后面可能出现以下错误
Executing genrule //tensorflow/python/keras/api:keras_python_api_gen_compat_v2 failed
所以可以先安装keras
pip3 install keras
4 安装Bazel
这是安装参考链接,以下安装最新版的命令,但一般情况可能不需要安装最新版,具体后面会讲
brew tap bazelbuild/tap
brew install bazelbuild/tap/bazel
查看bazel版本,如果output版本说明安装成功
bazel --version
如果已经安装,可以升级
brew upgrade bazelbuild/tap/bazel
如果是安装以前的版本,可以参照上述参考链接安装,以下是针对mac的安装步骤
5 下载tensorflow源代码
使用git clone,如下
git clone https://github.com/tensorflow/tensorflow.git
但是一般下载速度贼慢,网上针对git clone主要两种解决方法,一个是改host文件,一个是走代理外网。笔者只是看了看没试过,笔者是用了外网直接在github上下载的"tensorflow-master.zip"文件,然后解压成"tensorflow-master"文件夹。
如果需要以前的tensorflow版本,那还不如上这个github链接下载.whl直接install。
6 配置编译系统
首先cd到"tensorflow-master"文件夹,如果是git clone,那么直接按照官网上"cd tensorflow"就行。
然后输入命令"./configure"回车,就会弹出结果。
这个时候如果你安装的是bazel最新版,那么他会提示你版本太高去下一个低版本的,这时候回到步骤4中的参考链接下载以前的版本安装就行。
bazel版本对了之后会出现一系列选择,如下图
- 首先是选择python所在路径,选择brew安装下的路径"/usr/local/bin/python3",终端也会有提示
- 然后是选择python3包的路径,选择brew安装下的路径"/usr/local/lib/python3.7/site-packages"
- 然后是选择g++和gcc路径
- 然后就是一堆支持选择,具体自查,不懂就全选提示中大写的选项,不过最好一个个简单查一下,以下列出一些
关于XLA JIT支持
关于 OpenCL SYCL:选择y会让你选择路径,一般路径不存在说明你没安装,不如选N
关于ROCm:同上
关于CUDA支持:这是能够用GPU加速的关键
关于clang:笔者第六感选y
关于android:懂者自懂,不懂选N
关于IOS支持:笔者苹果笔记本选择了y,但没查这干啥的
7 编译pip软件包
对于CPU版
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
对于GPU版
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
编译时需要注意的问题(笔者是没注意(狗头),哈哈):
这一步很久,估计两三个小时,耐心等待~~
8 编译软件包
对于从master编译,即最新版,输入以下命令
./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg
就可以在/tmp/tensorflow_pkg文件夹下看到编译好的.whl文件啦,为了方便也可以更改路径比如在桌面
9 安装软件包
对于/tmp/tensorflow_pkg文件下的.whl,参考以下命令
pip3 install /tmp/tensorflow_pkg/tensorflow+tab键补全.whl
此时就成功安装tensorflow了!
10 运行demo
新建.py脚本,复制以下代码:
import tensorflow as tf
hello = tf.constant('hello world') # 创建一个常量
print(hello) # 输出
print(hello.numpy()) # 输出张量的值
print(hello.shape) # 输出维度
print(hello.dtype) # 输出张量类型
就可以开始tensorflow快乐之旅了!