1. 程式人生 > >1、TensorFlow基礎

1、TensorFlow基礎

1.1 概要

官網:https://www.tensorflow.org/

GitHub:https://github.com/tensorflow/tensorflow

模型倉庫:https://github.com/tensorflow/models

TensorFlow既是一個實現機器學習演算法的介面,也是執行機器學習演算法的框架。

除了執行深度學習,還可以實現許多其他演算法,比如線性迴歸、邏輯迴歸、隨機森林等。

主要技術特性:

  • 程式設計模型:資料流模型
  • 語言:Python、C++、Java
  • 部署:一次編寫,各處執行
  • 計算資源:CPU、GPU、TPU(Tensor Processing Unit,google專門為深度學習計算定製的晶片)
  • 實現方式:單機OR分散式
  • 平臺支援:谷歌雲平臺、Hadoop分散式檔案系統
1.2程式設計模型簡介 在計算圖的邊中流動(flow)的資料被稱為張量(tensor),故得名TensorFlow。 有一類特殊的邊中沒有資料流動,這種邊是依賴控制,作用是讓它的起始節點執行完之後再執行目標節點,使用者可以使用這樣的邊進行靈活的條件控制,比如限制記憶體使用的最高峰值。 Session是使用者使用TensorFlow的互動式介面,可以建立計算圖,之後用Run方法執行計算圖。 1.2.2 實現原理 TensorFlow的客戶端,通過Session的介面與master及多個worker相連。其中每個worker可以與多個硬體裝置相連(CPU|GPU)。master負責指導所有worker按流程執行計算圖。 tensor的引用次數會被記錄,當引用數為0時,記憶體將被釋放。 節點分配裝置策略:
  • 啟發式,人工經驗制定
  • 簡單貪婪,對一小部分資料進行實際運算而測量得到。(未來可能會用強化學習的神經網路進行輔助決策)
  • 使用者自定
1.2.3拓展功能 自動求導、單獨執行子圖、計算圖的控制流 1.2.4效能優化 自動識別重複計算,改寫計算圖;非同步計算,執行緒執行無須一直等待某個節點計算完成;支援高度優化第三方計算庫; TensorFlow提供三種不同的加速神經網路訓練的平行計算模式:
  • 資料並行:將一個mini-batch的資料放在不同裝置上計算,實現梯度計算的並行化。
  • 模型並行:將計算圖的不同部分放在不同的裝置上運算,實現簡單的模型並行,目標在於減少每一輪訓練迭代的時間。
  • 流水線並行:和非同步的資料並行很像,只不過是在同一個硬體裝置上實現並行。