TensorFlow在Mac上的简易安装教程

2,385 阅读2分钟

本文迁移自本人简书账号酱油葱, 后续不会再在简书更新文章, 具体原因可以查看简书CEO盛赞程序员出轨率高“真实、新鲜、多元” ,对不起打扰了

前提

笔者使用的电脑为Mac mini(Late 2014), OS系统为10.12.3. python为系统的版本2.7.10

安装过程

安装Homebrew

这是Mac上安装管理工具/应用的神器, 强烈建议安装. 在终端上运行这行命令即可.

注意, 这是硬广告. XD:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

由于Homebrew每次安装新包时, 都会启动更新, 可以考虑使用以下方式:

HOMEBREW_NO_AUTO_UPDATE=1 brew install ...

或者将HOMEBREW_NO_AUTO_UPDATE=1 brew install另外起个别名, 这样安装和升级就是两件事情了

安装pip

安装了Homebrew后, 安装其它东西简直小菜一碟, 只要网上仓库里有它的安装包就行. 在终端上运行这行命令

brew install pip

如果没有安装Homebrew, 也可以考虑直接这样安装pip:

sudo easy_install pip

安装vertualenv

virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响 这个工具也是非常必要的, 毕竟没有人愿意将自己的机器环境搞得一塌糊涂. 命令行指令如下:

sudo pip install --upgrade virtualenv

创建虚拟环境

这里可以任意指定一个目录作为虚拟Python环境的主目录, 指令如下:

virtualenv --system-site-packages ~/tensorflow

激活虚拟环境

使用bash的用户可以使用以下命令:

cd ~/tensorflow

source bin/activate

使用csh的用户可以使用以下命令:

cd ~/tensorflow

source bin/activate.csh

使用zsh的我只好表示作者太不人道了~ 于是乎只能选择bash脚本来执行. 执行结果***(终端提示符应该发生变化)***应该会显示为:

(tensorflow)$

之前的提示符应该为

$

安装TensorFlow

在 virtualenv 内, 安装 TensorFlow, 目前我使用的版本是1.0.0的CPU版本. 你如果想用别的版本可以去他们github官网上去看看都有什么路径

pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0-py2-none-any.whl

感谢TensorFlow团队的努力, 目前也可以通过更快捷的方式安装了: ***Made pip packages pypi compliant. TensorFlow can now be installed by pip install tensorflow command. ***

pip install tensorflow

测试TensorFlow

Tensor中文社区提供了一个简易Python脚本, 进行TensorFlow集成测试, 以下为Python文件内容:

# test.py
import tensorflow as tf
import numpy as np

# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300

# 构造一个线性模型
# 
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b

# 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

# 初始化变量
init = tf.initialize_all_variables()

# 启动图 (graph)
sess = tf.Session()
sess.run(init)

# 拟合平面
for step in xrange(0, 201):
    sess.run(train)
    if step % 20 == 0:
        print step, sess.run(W), sess.run(b)

# 得到最佳拟合结果 W: [[0.100  0.200]], b: [0.300]

以上内容保存后, 在virtualenv环境下执行:

python test.py

就能看到我们的三维数据的平面拟合结果了:

0 [[ 0.30465344 0.70788538]] [-0.23038898] 20 [[ 0.20695965 0.35023165]] [ 0.16050725] 40 [[ 0.1383343 0.2433864]] [ 0.25552779] 60 [[ 0.11293854 0.21308941]] [ 0.28581053] 80 [[ 0.10424803 0.20405222]] [ 0.2954708] 100 [[ 0.10137596 0.20127273]] [ 0.298554] 120 [[ 0.10044261 0.20040286]] [ 0.29953831] 140 [[ 0.10014189 0.20012806]] [ 0.29985258] 160 [[ 0.10004541 0.20004079]] [ 0.29995292] 180 [[ 0.10001453 0.20001301]] [ 0.29998496] 200 [[ 0.10000464 0.20000416]] [ 0.29999521]

最后的拟合结果(python精度确实是有点让人疑惑)为:

200 [[0.100, 0.200]], [0.300] #大约经过了200步达成

当使用完 TensorFlow, 需要退出虚拟环境, 可以执行这条指令停用 virtualenv:

deactivate $ # 你的命令提示符会恢复原样

还没结束~

因为CPU版本的TensorFlow跑起来实在有点慢, 所以更好的办法是使用GPU版本. 前提还是一样的, 安装brew, pipvirtualenv, 然后再安装bazel:

brew install bazel

接着安装SWIG

brew install swig

再接着安装Cuda

brew cask install cuda

安装前最好检查一下Cuda的版本是否符合预安装的GPU版本最低限制(例如本人要下载的版本要求Cuda版本最低7.5)

brew cask info cuda

你会看到类似这些内容

cuda: 8.0.55 https://developer.nvidia.com/cuda-zone /usr/local/Caskroom/cuda/8.0.55 (23 files, 1.3GB) From: https://github.com/caskroom/homebrew-cask/blob/master/Casks/cuda.rb

如果你的版本低于最低限制版本, 记得更新一下brew:

brew update brew upgrade cuda

同时, 你还得去官网NVIDIA官网下载指定版本的Cudnn(目前最新版本为5.1, 对应最高的cuda版本为8.0): developer.nvidia.com/cudnn 这是我下载的指定文件链接地址: developer.nvidia.com/rdp/assets/…

下载完成后, 记得解压并拷贝到指定目录/usr/local/cuda, 指令如下:

tar xzvf ~/Downloads/cudnn-8.0-osx-x64-v5.0.tgz sudo mv -v ~/Downloads/cuda/lib/libcudnn* /usr/local/cuda/lib sudo mv -v ~/Downloads/cuda/include/cudnn.h /usr/local/cuda/include

为了保证库能查找到链接路径, 你还要把~/.bash_profile(或其它环境配置项文件)添加以下内容:

export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH

//TODO: 本人还没安装成功, 正在纠结中, 详细教程可以看github上这篇文章

##后记 极客学院的这篇教程提到了更多的安装方式, 甚至还提供了Docker, 这样能确保你的安装能完全杜绝软件依赖问题, 减少非常多的麻烦.

TensorFlow中文社区是我们目前国内TensorFlow最大的学习和研究社区, 大伙可以加入这个大家庭, 了解更多关于大数据框架TensorFlow的知识.