2017最後一天的學習-TensorFlow

jeanron100發表於2018-01-06

2017最後一天的學習-TensorFlow

中午吃過飯後,家人都去午休了,我就躺在沙發上看電視,然後稀裡糊塗睡著了,突然自己問自己今天寫點什麼呢,然後在迷糊中突然想到了TensorFlow,好了,那今天就看看它吧。

之前寫過兩篇相關的:

什麼是TensorFlow,如果按照標準的官方說法,就是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。資料流圖的概念稍後來講。

TensorFlow到底有多火呢,按照github 2016年的資料是29622個星,2017年這個數字飆升到了8萬多,毫無疑問,是2017年最閃亮的專案。

2017最後一天的學習-TensorFlow

TensorFlow引起很多的關注和興趣,可能源自AlphaGo,因為都是來自Google Mind團隊。他們的關係非常緊密,可以說互相依存。

2017最後一天的學習-TensorFlow

如果從我的理解來說,該怎麼解釋這個技術呢。我個人完全不懂圍棋的玩法,就班門弄斧說下圍棋的這個事情吧,可能很多是不對的,純是技術交流。以前的計算機模擬的基本都是窮舉的模型,比如有一個步驟有100種可能,那麼我就計算100次,每一次得到的結果可能都是侷限的,如果要看遠一些,那麼比如看到後面的5步的走法,按照這個方式理解,那就是100*100*100*100*100種可能性,這種方式結算的結果如果從整體來把握,幾乎是不可控的,因為圍棋裡的玩法不是一個固定的模式,不像你輸入一個資料,就立馬透過公式計算出一個結果一樣。所以說在各種不確定中找到確定的方案,而且能夠確定邊界,難度應該是相當的大,但是如果換一種思路,比如我把所有不同棋手的學習過程都借鑑過來,比如100個人下棋,在某一個階段下了某一步棋,對整個棋局都是有利,那麼計算機就會標記下來,算是學習了這個技巧,不斷的借鑑不斷的模仿,然後自我改進,這個過程必然會用的大量的資料和大量的計算,於是乎,各種經驗和技巧就不斷的迭代,不斷的抽象出來,所以說如果讓計算機來說某一步具體為什麼要那麼下,可能沒有一個很好的答案,但是它有大把的資料顯示這麼下一定是目前最好的方案,它會把經驗集合起來,而不去做最初窮舉的計算。

這方面的實力哪裡最強,個人認為還是矽谷,大學裡面佔據地理優勢的就是史丹佛了。今年十一去史丹佛的時候,真是被裡面的美景和文化氛圍吸引了,非常典型的西班牙建築特徵:紅陶筒瓦、手工抹灰牆、陶藝掛件、拱璇門廊。

2017最後一天的學習-TensorFlow

大名鼎鼎的吳恩達就是史丹佛的教授,也在網易開通了機器學習的公開課,感興趣自行搜尋下。

下午的時候開始簡單瞭解了下,然後開始部署下環境。

TensorFlow的安裝可以分為不同的作業系統版本,最早是不支援windows的(現在的版本支援),在Unix,Linux下部署還是很方便的。它提供了大量的Python API,這是大多數深度學習框架都有的; 安裝時會根據CPU,GPU的差別有不同的安裝型別;目前推薦的作業系統是Ubuntu,不同的Python版本安裝也有差別。

我們透過網站()的目錄結構就很容易看到TensorFlow的大體情況,支援的平臺。

2017最後一天的學習-TensorFlow

目前最新的版本是1.4,下載連結是:

我們可以根據pip來安裝,當然我任性了一會,在RedHat 6版本上安裝了,結果發現過程還是很痛苦的。

如果直接使用pip install --upgrade來安裝,很可能會提示網站的安全性問題,我們可以先用wget拿到whl檔案,然後使用pip install來安裝。

當然後面又碰到了一堆的問題,最鬱悶的就是glibc的版本相容性問題。在RHEL 6中的glibc版本是2.12,而在7中則為2.17,安裝TensorFlow需要的版本至少是2.16,所以在RHEL6版本中還需要手工升級,glibc算是核心庫,我們執行的命令ls,rm這些都和這個庫息息相關,所以操作不當就會導致整個系統不可用,我算是趟上了這個坑,當手工升級glibc的時候,發現到問題的時候,貌似有些晚了,因為ls,rm都可不用了,而我的虛擬機器上已經在跑一些測試環境了。有很多資料都沒來得及備份,我一邊想辦法,後悔沒完整備份,一邊在找補救措施,最後好不容易搞定,趕緊做了兩件事情:

  1. 備份認為關鍵的資料和程式

  2. 對虛擬機器開啟了快照,隨時跟進快照情況進行回退

有了這兩個保障,也算是有驚無險。

所以最好還是按照指定的環境,比如Ubuntu來吧。

所以如果說簡單些,TensorFlow就是個軟體庫,我們直接引用即可。

比如一個最簡單的TensorFlow程式,引入這個庫,然後這樣一個3+5的操作還得不到8

importtensorflowastf

a=tf.add(3,5)

print(a)

>>Tensor("Add: 0",shape=(),dtype=int32)

這是因為需要開啟session,在session中操作能夠被執行,簡單改進下:

import tensorflow as tf

a = tf.add(3, 5)

sess = tf.Session()

print(sess.run(a))

sess.close()

>> 8

看今天的晚會里面,已經有了全自動碼頭,看來各行各業都在革命,難啊。

走入IT路,也不容易。

用王家衛《一代宗師》裡的臺詞來簡單總結下:

從此只有眼前路,沒有身後身,回頭無岸

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2149786/,如需轉載,請註明出處,否則將追究法律責任。

相關文章