1.1 處理器前端
TensorFlow 能夠在CPU、GPU、TPU中執行程序員
1.2 平臺後端
TensorFlow 具有跨平臺能力,Windows 、Linux、Android、IOS、Raspberry Pi、雲端執行設計模式
1.3 分佈式執行引擎網絡
TensorFlow Distributed Execution Engine 分佈式執行引擎架構
在深度學習中,最花時間的就是模型的訓練,尤爲大型的深度學習模型必須使用大量數據進行訓練,須要數天乃至數週之久,TensorFlow 具有分佈式計算能力,可同時在數百臺機器上執行訓練模型,大幅度縮短模型訓練的時間。機器學習
1.4 前端程序語言分佈式
TensorFlow 可使用多種前端程序語言,如Python、C++等,但Python的支持效果最好。模塊化
1.5 高級API學習
TensorFlow 是比較低級的深度學習 API,因此用程序設計模型時必須自行設計,張量乘積、卷積等底層操做,此好處時咱們可自行設計各類深度學習模型,缺點是開發時須要編寫更多的程序代碼。
網上開發社區以 TensorFlow 爲底層開發不少高級的深度學習 API ,如 Keras、TF-Learn、TF-Slim、TF-Layer 等,其中 Keras 的功能
顧名思義,TensorFlow是由Tensor 和 Flow 組成的。
2.1 Tensor(張量)
在數學裏,張量是一種幾何實體或廣義上的 「 數量 」 ,在此 「 數量 」 包含 「 標量、向量或矩陣 「 。
如 0.1
如 [ 0.1 0.2 0.3 ]
如 [ [ 0.1 0.2 0.3 ]
[ 0.4 0.5 0.6 ] ]
2.2 Flow(數據流)
全部的 TensorFlow 程序都是先創建 」 計算圖 「 (computational graph),這是張量運算和數據處理的流程。
咱們可以使用 TensorFlow 提供的模塊以不一樣的程序設計語言創建 」 計算圖 " 。TensorFlow 提供的模塊很是強大,咱們能夠設計張量運算流程,並構建深度學習或機器學習模型。
創建 「 計算圖 」 完成後,咱們就能夠在不一樣的平臺上執行 「 計算圖 」 。
TensorFlow 程序設計模式的核心是 「 計算圖 」 ,可分爲創建計算圖和執行計算圖兩部分。
3.1 創建計算圖
使用 TensorFlow 提供的模塊創建計算圖,設計張量運算流程,並構建各類深度學習或機器學習模型
3.2 執行計算圖
創建計算圖後,咱們就可創建 Session 來執行計算圖了。
在 TensorFlow 中, Session(願意爲會話)的做用是在客戶端和執行設備間創建鏈接。有了該鏈接,就能夠將計算圖在各類不一樣設備中執行,後續任何與設備之間的數據傳輸都必須經過 Session 來進行,而且最後得到執行後的結果。
Keras 是一個開源碼的高級深度學習程序庫,使用 Python 編寫,可以在 TensorFlow 或 Theano 之上。
4.1 爲什麼使用 Keras
相對 TensorFlow 低級連接庫而言,Keras 使用最少的程序代碼、花費最小的時間就可創建深度學習模型,進行訓練、評估準確率、並進行預測。
4.2 Keras 的工做方式
Keras 是一個模型級(model-level)的深度學習連接庫,Keras只處理模型的創建、訓練、預測等功能。
深度學習底層的運行,如張量的運算,Keras 必須配合 「 後端引擎 " (backend engine)進行運算;目前 Keras 提供了 TensorFlow 和 Theano 兩種後端引擎。
簡而言之, Keras 程序員只須要專一於創建模型,底層操做細節(以張量運算爲例)則由 Keras 轉化爲 Theano 或 TensorFlow 相應指令。
4.3 Keras 深度學習連接庫特點
1 - 簡單快速地創建原型prototyping : Keras 具有友好的用戶界面、模塊化設計、可擴充性
2 - 已經內建各類類神經網絡層級,如卷積層 CNN、RNN,此可幫助咱們快速創建神經網絡模型。
3 - 經過後端引擎 Theano 與 TensorFlow,可在 CPU 與 GPU 上運行。
4 - 以Keras 開發的程序代碼更簡潔,可讀性更高、更容易維護、更具備生產力。
5 - Keras的文件多、範例多、淺顯易懂。
實質上是利用 Keras 創建多層感知器(Multilayer Perceptron)。輸入層 - 隱藏層 - 輸出層;具體過程以下:
Sequential 模型是多個神經網絡的線性堆疊。
model = Sequential()
keras 已經內建各類神經網絡層(如 Dense層、Conv2d層等),只要在以前創建的模型上加入咱們選擇的神經網絡層便可。
model.add(Dense(units=256, input_dim=784, kernel_initializer='normal', activation='relu'))
model.add(Dense( units=10, kernel_intializer='normal', actiation='softmax'))
以上基本就完成了多層感知器模型的創建。
略