為了充分掌握機器學習的實作工具, 決定提前熟悉 TensorFlow 2, 以下是最近閱讀下列書籍中關於 TensorFlow 2 的摘要筆記 :
- 精通機器學習 第二版 (碁峰, 2020)
- Towards TensorFlow 2.0 無痛打造 AI 模型 (博碩, 2020)
- Applied Neural Networks with TensorFlow 2 (Apress, 2021)
- Learning Deep Learning (Addison Willy, nVIDIA, 2021)
TensorFlow 是 Geoffrey Hinton, Jeffrey Dean, 與吳恩達領導的 Google Brain 團隊在其第一代神經網路系統 DistBelief 基礎上所開發的深度學習框架, 於 2015 年開放原始碼, 更好用的 TensorFlow 2 則於 2016 發表. TensorFlow 2 是一個大幅度的改版, 主要的改進有如下四點 :
- Eager Execution :
在 TensorFlow 1.x 時必須定義好計算流程圖, 然後呼叫 sess.run() 執行才會得到結果, 因此屬於靜態計算圖 (static graph). TensorFlow 2.0 之後程式輸入後即可馬上執行看到結果, 不需要透過 Session 去執行, 故屬於動態計算圖 (dynamic graph). - More Pythonic :
TensorFlow 1.x 版有自己的語法, 例如迴圈要使用 tf.while_loop 而非 Python 本身的 while 敘述, 造成了額外的負擔. TensorFlow 2.0 之後可使用 @tf.function 裝飾器來直接使用 Python 語法. - tf.keras :
在 TensorFlow 1.x 時需另外安裝 Keras 套件才能使用這個方便的積木式高階 API, 但 TensorFlow 2.0 之後 Keras 已經被整合進來成為 tf.keras 子套件. - tf.data :
TensorFlow 2.0 推出 tf.data API 來統一處理資料導入事宜, 方便處理資料流.
TensorFlow 除了豐富的函式庫外, 還包含了用來視覺化的 TensorBord, 用來將 TensorFlow 產品化的 TensorFlow Extended, 存放機器學習模型的 TensorFlow Hub (可在 GitHub 模型花園下載已預訓練好的神經網路模型), 還開闢了 YouTube 官方學習頻道, 形成了一個完整的深度學習專案開發生態系, TensorFlow 專案的開發管線 (pipeline) 如下圖所示 :
TensorFlow 具有跨平台與跨語言特性, 可在 Windows, Linux, 以及 macOS 上運行, 其 API 除了 Python 外, 還支援 R, C++, Swift, Java, Go, 以及 Javascript 等語言.
TensorFlow 底層都是以高效的 C++ 程式碼建構的, 其核心與 Numpy 類似, 硬體上不只支援在 CPU 上以低階的 Eigen 函式庫執行張量運算, 也支援顯示卡的 GPU 或 Google 客製化的 TPU 以及分散式計算等技術來提升訓練速度. 不過 TensorFlow 只支援在輝達 (nVIDIA) CUDA 技術架構的 GPU (使用 cuDNN 函式庫), 非 nVIDIA 顯示卡 (例如樹莓派) 無法使用 GPU 加速.
TensorFlow 2.0 將 Francois Chollet 開發的高階神經網路函式庫 Keras 整合進來成為 tf.keras, 因此在 Python 環境下安裝 TensorFlow 後已經不需要再另行安裝 Keras. 納入 Keras 讓使用者能一氣呵成, 方便且快速地建構與訓練深度學習模型.
TensorFlow 的 Python API 如下表 :
- 高階深度學習 API :
tf.estimator
tf.keras - 低階深度學習 API :
tf.initializers
tf.losses
tf.metrics
tf.nn
tf.optimizers
tf.train - I/O 與資料前處理 API :
tf.audio
tf.data
tf.feature_column
tf.image
tf.io
tf.queue - Autodiff API :
tf.GradientTape
tf.gradients() - 數學 API :
tf.bitwise
tf.linalg
tf.math
tf.random
tf.signal - 特殊資料結構 API :
tf.lookup
tf.nest
tf.ragged
tf.sets
tf.sparse
tf.strings - 部署與優化 API :
tf.autograph
tf.distribute
tf.graph_util
tf.lite
tf.quantization
tf.sved_model
tf.tpu
tf.xla - TensorBoard 視覺化 API :
tf.summary - 其他 API :
tf,compat
tf.config
事實上有 95% 的深度學習專案只需要高階 API 中的 tf.keras 與 tf.data 即可完全處理掉, 如果需要更大的彈性, 可以使用低階的 Python API 來直接處理張量.
安裝 TensorFlow 指令如下 :
$ sudo pip3 install tensorflow-gpu (GPU 版)
此為 Linux 上的指令, 在 Windows 只要去掉 sudo 即可. 在 macOS 上安裝 TensorFlow 需有 Xcode 9.2 版以上才行 (但 macOS 目前不支援 GPU 版 TensorFlow).
參考 :
其實更方便的 TensorFlow 執行環境是 Google Colab, 完全不需要安裝任何套件或購買價格不斐的顯示卡, 可選擇是否要使用 GPU/TPU 來加速, 參考 :
沒有留言:
張貼留言