引
在深度學(xué)習(xí)大熱的情況下很自然地考慮要用一些類似的工具來做一些有意思的事情盹兢,一個(gè)常用的工具就是TensorFlow,TensorFlow是一個(gè)采用數(shù)據(jù)流圖(data flow graphs)颤介,用于數(shù)值計(jì)算的開源軟件庫,也就是說它是一個(gè)庫,提供API供你使用聋伦,來用特殊的數(shù)據(jù)流圖的方式轉(zhuǎn)換你的算法計(jì)算,從而得出結(jié)果的工具界睁。
要使用第一步就是安裝環(huán)境了觉增,查資料配置了一番,運(yùn)行hello world程序成功了翻斟,這里記錄一下過程逾礁。
環(huán)境說明
題目說明了,我是在mac環(huán)境下配置的访惜,系統(tǒng)版本為:macOS 10.12.5敞斋。
TensorFlow支持多種語言,我用的是python疾牲。
安裝的TensorFlow版本為macOS的1.3.0 純CPU無GPU版植捎,另有含GPU版,可以利用GPU提升計(jì)算速度阳柔。關(guān)于TensorFlow的版本信息可以看它的github焰枢。
安裝指南
TensorFlow的官網(wǎng)是英文的,英文好的可以直接看官網(wǎng)舌剂,信息比較新也比較全济锄。英文吃力的可以先看中文社區(qū),也還行霍转,其中也有安裝的說明荐绝,不過也會遇到一些坑,因此才有了我這篇避消。
其實(shí)安裝有多種方式低滩,光是在mac上就可以通過homebrew召夹、Docker、鏡像恕沫、VirtualEnv等监憎,我選擇的是基于VirtualEnv安裝,因?yàn)檫@樣可以創(chuàng)建一個(gè)隔離的容器, 來安裝 TensorFlow婶溯。這是可選的, 但是這樣做能使排查安裝問題變得更容易鲸阔。也就是說我們創(chuàng)建了一個(gè)單獨(dú)的環(huán)境來安裝和運(yùn)行TensorFlow,甚至mac本身就有的python環(huán)境好像也另外安裝了一份迄委。
基于VirtualEnv安裝的步驟如下:
如果沒有安裝 pip的話褐筛,先安裝pip:
$ sudo easy_install pip # 如果還沒有安裝 pip
$ sudo pip install --upgrade virtualenv
接下來, 我們建立一個(gè)全新的 virtualenv 環(huán)境。為了將環(huán)境建在 ~/tensorflow 目錄下, 執(zhí)行:
$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow #進(jìn)入該目錄
然后, 激活 virtualenv(不用了就要手動停用):
$ source bin/activate # 如果使用 bash
$ source bin/activate.csh # 如果使用 csh
(tensorflow)$ # 終端提示符應(yīng)該發(fā)生變化
上面兩個(gè)source命令只需要根據(jù)情況運(yùn)行一種叙身,我使用的是第一種渔扎,執(zhí)行命令后,命令前會多一個(gè)(tensorflow)提示符曲梗,這表示激活成功了赞警,之后的操作都會在此環(huán)境下運(yùn)行。
接著就在 virtualenv 內(nèi), 安裝 TensorFlow:
(tensorflow)$ pip install --upgrade <$url_to_binary.whl>
注意虏两,上面的 <$url_to_binary.whl> 并不是要原封不動地輸入愧旦,而是根據(jù)你要安裝的TensorFlow版本替換成不同的內(nèi)容,比如我安裝1.3.0無GPU版的定罢,就改成如下:
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.3.0-py2-none-any.whl
其他版本大同小異笤虫,比如該系統(tǒng)名,改版本號數(shù)字祖凫,改python版本數(shù)字琼蚯,有無GPU等,版本信息可以在github看到最新的惠况。
到此遭庶,TensorFlow就安裝完成了!
其實(shí)稠屠,如果不想在一個(gè)虛擬環(huán)境中安裝峦睡,而是直接在整個(gè)系統(tǒng)中安裝,也不挑版本权埠,則可以直接用:
pip install tensorflow
來安裝榨了,pip會自動選擇合適你python版本的、符合你gpu的攘蔽、最新的TensorFlow來安裝龙屉,如果是python3就用pip3安裝。
寫個(gè)Hellow World
常見的满俗,安裝完后我們寫個(gè)小程序來試一試转捕,我用的是python語言:
import tensorflow as tf
# 輸出Hello, TensorFlow!
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print sess.run(hello)
# 計(jì)算 10 + 32 并輸出
a = tf.constant(10)
b = tf.constant(32)
print sess.run(a+b)
# 把一個(gè)1*2的矩陣和一個(gè)2*1的矩陣相乘并輸出
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
result = sess.run(product)
print result
sess.close()
關(guān)于這段代碼做什么作岖,注釋里已經(jīng)說了,其實(shí)大概也能看懂瓜富,具體的語法可以到官網(wǎng)或者中文社區(qū)去學(xué)習(xí)鳍咱,了解基本用法就能看懂了降盹。
要運(yùn)行与柑,只需要把這段代碼放到一個(gè)命名為 hello.py 的python文件,將文件放到我們創(chuàng)建的~/tensorflow目錄(如果找不到這個(gè)目錄蓄坏,可以在終端輸入 open ~/tensorflow 來在Finder中顯示目錄)下价捧,或者其他目錄下也可以,只是要在終端命令中進(jìn)入該目錄涡戳,然后運(yùn)行該python文件即可:
(tensorflow)$ python hello.py
輸出結(jié)果應(yīng)該為:
Hello, TensorFlow!
42
[[ 12.]]
除了結(jié)果之外结蟋,因?yàn)槲野惭b的是無GPU版本的,它可能還會提示你可以利用GPU來急速計(jì)算渔彰。
不再使用之后嵌屎,最好停用 virtualenv:
# 當(dāng)使用完 TensorFlow
(tensorflow)$ deactivate # 停用 virtualenv
$ # 你的命令提示符會恢復(fù)原樣
結(jié)
到此為止,就已經(jīng)安裝好環(huán)境并且運(yùn)行Hello程序了恍涂,不算太難宝惰,只是對于新手來說容易有點(diǎn)摸不著頭腦不知道在干什么。此外再沧,光看Hello程序會覺得TensorFlow做得事情很簡單尼夺,但這只是因?yàn)槲覀兊睦雍唵危琓ensorFlow主要方便用來做復(fù)雜計(jì)算的炒瘸,它是一個(gè)數(shù)值節(jié)點(diǎn)淤堵、操作節(jié)點(diǎn)以及之間連線表示流程圖的結(jié)構(gòu),想象一下神經(jīng)網(wǎng)絡(luò)顷扩,還是很相似的拐邪。我還只是一個(gè)新手,對其的理解也很淺薄隘截,希望以后可以繼續(xù)學(xué)習(xí)來做出一些真正有意思的事情扎阶。