目錄
1.1XLA:Accelerate linear algebra
TensorFlow1.0
1.1XLA:Accelerate linear algebra
TensorFlow 的設計目標和核心優勢之一是其靈活性。TensorFlow 被設計成一個靈活和可擴展的系統,可用於定義任意數據流圖(data flow graph)並使用異構計算設備(如 CPU 和 GPU)以分佈式方式有效地執行它們。
但是靈活性通常與性能不能兼得。雖然 TensorFlow 旨在定義任何種類的數據流圖,但是由於 TensorFlow 分別優化每個 運算/指令(op),所以使所有圖都高效地執行是有挑戰性的。當一個具有高效實現的運算存在,或者每個運算都是相對重量級的操作(heavyweight operation)時,一切都很好;否則,用戶仍然可以從低級 op 中組合 op,但是這種組合不能保證以最有效的方式運行。
這就是我們開發了 XLA(Accelerated Linear Algebra/加速線性代數)的原因,它是一個用於 TensorFlow 的編譯器。XLA 使用 JIT 編譯技術來分析用戶在運行時(runtime)創建的 TensorFlow 圖,專門用於實際運行時的維度和類型,它將多個 op 融合在一起併爲它們形成高效的本地機器代碼——能用於 CPU、GPU 和自定義加速器(例如谷歌的 TPU)。
1.2 更高級別API
關於高級別的API,這裏只是簡單知道一下概念就ok,後續的博客將具體介紹。
- tf.layers
tf.layers中分爲類和函數,我們這裏主要講函數,因爲類和函數的用法大同小異。
Input(…): 用於實例化一個輸入 Tensor,作爲神經網絡的輸入。 average_pooling1d(…): 一維平均池化層
average_pooling2d(…): 二維平均池化層 average_pooling3d(…): 三維平均池化層
batch_normalization(…): 批量標準化層 conv1d(…): 一維卷積層 conv2d(…): 二維卷積層
conv2d_transpose(…): 二維反捲積層 conv3d(…): 三維卷積層 conv3d_transpose(…):
三維反捲積層 dense(…): 全連接層 dropout(…): Dropout層 flatten(…): Flatten層,即把一個
Tensor 展平 max_pooling1d(…): 一維最大池化層 max_pooling2d(…): 二維最大池化層
max_pooling3d(…): 三維最大池化層 separable_conv2d(…): 二維深度可分離卷積層
看上面這個函數,可以發現,這個模塊主要覆蓋的區域是全連接和卷積等等的基本操作。但是這些操作已經非常足夠了。我們可以根據自己的需要,在可以使用這裏的API的時候使用,來簡化我們的代碼。
- tf.metrics
Tensorflow內置的評估指標算子。
- tf.losses
用於計算各種損失函數
官方文檔:https://tensorflow.google.cn/api_docs/python/tf/keras/losses
- tf.keras
這是一個很方便上手的API,2.0版本對其進行進一步升級,後面會具體講。
1.3支持docker鏡像
通俗來說:部署服務更加簡潔
Docker
Docker 使用容器創建虛擬環境,以便將 TensorFlow 安裝結果與系統的其餘部分隔離開來。TensorFlow 程序在此虛擬環境中運行,該環境能夠與其主機共享資源(訪問目錄、使用 GPU、連接到互聯網等)。我們會針對每個版本測試 TensorFlow Docker 映像。
Docker 是在 Linux 上啓用 TensorFlow GPU 支持的最簡單方法,因爲只需在主機上安裝 NVIDIA® GPU 驅動程序,而不必安裝 NVIDIA® CUDA® 工具包。
TensorFlow Docker 要求
在本地主機上安裝 Docker。
要在 Linux 上啓用 GPU 支持,請安裝 NVIDIA Docker 支持。
請通過 docker -v 檢查 Docker 版本。對於 19.03 之前的版本,您需要使用 nvidia-docker2 和 --runtime=nvidia 標記;對於 19.03 及之後的版本,您將需要使用 nvidia-container-toolkit 軟件包和 --gpus all 標記。這兩個選項都記錄在上面鏈接的網頁上。
2、tensorflow1.0架構
高層封裝
Keras
Estimator
datasets
layers
distrbution engine