TensorFlow在Mac上的簡易安裝教程

醬油蔥發表於2019-02-26

本文遷移自本人簡書賬號醬油蔥, 後續不會再在簡書更新文章, 具體原因可以檢視簡書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的知識.

相關文章