1. 程式人生 > >人工智慧TensorFlow-初識TensorFlow

人工智慧TensorFlow-初識TensorFlow

轉眼要接近2018年的尾巴了。感覺一年忙忙碌碌,所得甚少。也許是不能知足常樂的原因吧。

這次決定涉足人工智慧領域,因為認識到該領域的強大,便希望能與量化交易方面相結合,以達到更理想的效果。

計劃在年底前,熟練使用TensorFlow。預祝未來一年的自己,變得更好吧~

TensorFlow 是一個用於人工智慧的開源神器

TensorFlow 中的tensor張量的意思,flow是流動的意思。TensorFlow 是張量(資料)在圖中流動的意思

關於 TensorFlow

TensorFlow™ 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),伺服器,移動裝置等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智慧研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網路方面的研究,但這個系統的通用性使其也可廣泛用於其他計算領域。

什麼是資料流圖(Data Flow Graph)?

資料流圖用“結點”(nodes)和“線”(edges)的有向圖來描述數學計算。“節點” 一般用來表示施加的數學操作,但也可以表示資料輸入(feed in)的起點/輸出(push out)的終點,或者是讀取/寫入持久變數(persistent variable)的終點。“線”表示“節點”之間的輸入/輸出關係。這些資料“線”可以輸運“size可動態調整”的多維資料陣列,即“張量”(tensor)。張量從圖中流過的直觀影象是這個工具取名為“Tensorflow”的原因。一旦輸入端的所有張量準備好,節點將被分配到各種計算裝置完成非同步並行地執行運算。

Tensors Flowing

TensorFlow的特徵

高度的靈活性

TensorFlow 不是一個嚴格的“神經網路”庫。只要你可以將你的計算表示為一個數據流圖,你就可以使用Tensorflow。你來構建圖,描寫驅動計算的內部迴圈。我們提供了有用的工具來幫助你組裝“子圖”(常用於神經網路),當然使用者也可以自己在Tensorflow基礎上寫自己的“上層庫”。定義順手好用的新複合操作和寫一個python函式一樣容易,而且也不用擔心效能損耗。當然萬一你發現找不到想要的底層資料操作,你也可以自己寫一點c++程式碼來豐富底層的操作。

真正的可移植性(Portability)

Tensorflow 在CPU和GPU上執行,比如說可以執行在臺式機、伺服器、手機移動裝置等等。想要在沒有特殊硬體的前提下,在你的筆記本上跑一下機器學習的新想法?Tensorflow可以辦到這點。準備將你的訓練模型在多個CPU上規模化運算,又不想修改程式碼?Tensorflow可以辦到這點。想要將你的訓練好的模型作為產品的一部分用到手機app裡?Tensorflow可以辦到這點。你改變主意了,想要將你的模型作為雲端服務執行在自己的伺服器上,或者執行在Docker容器裡?Tensorfow也能辦到。Tensorflow就是這麼拽 ?

將科研和產品聯絡在一起

過去如果要將科研中的機器學習想法用到產品中,需要大量的程式碼重寫工作。那樣的日子一去不復返了!在Google,科學家用Tensorflow嘗試新的演算法,產品團隊則用Tensorflow來訓練和使用計算模型,並直接提供給線上使用者。使用Tensorflow可以讓應用型研究者將想法迅速運用到產品中,也可以讓學術性研究者更直接地彼此分享程式碼,從而提高科研產出率。

自動求微分

基於梯度的機器學習演算法會受益於Tensorflow自動求微分的能力。作為Tensorflow使用者,你只需要定義預測模型的結構,將這個結構和目標函式(objective function)結合在一起,並新增資料,Tensorflow將自動為你計算相關的微分導數。計算某個變數相對於其他變數的導數僅僅是通過擴充套件你的圖來完成的,所以你能一直清楚看到究竟在發生什麼。

多語言支援

Tensorflow 有一個合理的c++使用介面,也有一個易用的python使用介面來構建和執行你的graphs。你可以直接寫python/c++程式,也可以用互動式的ipython介面來用Tensorflow嘗試些想法,它可以幫你將筆記、程式碼、視覺化等有條理地歸置好。當然這僅僅是個起點——我們希望能鼓勵你創造自己最喜歡的語言介面,比如Go,Java,Lua,Javascript,或者是R。

效能最優化

比如說你又一個32個CPU核心、4個GPU顯示卡的工作站,想要將你工作站的計算潛能全發揮出來?由於Tensorflow 給予了執行緒、佇列、非同步操作等以最佳的支援,Tensorflow 讓你可以將你手邊硬體的計算潛能全部發揮出來。你可以自由地將Tensorflow圖中的計算元素分配到不同裝置上,Tensorflow可以幫你管理好這些不同副本。