市面上有許多深度學習的框架(Framework),TensorFlow是其中的主流框架,它在2.x版進行大幅度的改版,並且納入Keras後,整體的架構變得更加完整易用,但也造成學習路徑的多樣化,筆者整理一些K書心得與同好分享。

圖1 各種深度學習框架在Arxiv網站的論文採用比率,圖片來源:Which deep learning framework is the best? (https://towardsdatascience.com/which-deep-learning-framework-is-the-best-eb51431c39a)。

 

  • 官方的教學資源(https://www.tensorflow.org/overview)主要有兩個頁籤『教學』(Tutorial)與『指南』(Guide),建議讀者先從『指南』入門,而非『教學』,教學其實是針對影像/文字/音訊作專題式的介紹。

 

  • 從基礎到進階,逐步理解神經網路設計的原理。
    1. 張量(Tensor)運算:包括向量、矩陣的運算。
    2. 自動微分(Automatic Differentiation):梯度計算、優化(Optimization)、神經網路梯度下降求解。
    3. 各式神經層:包括Dense、卷積(Conv1D、Conv2D、Conv3D)、循環神經層(RNN、LSTM、GRU)等。
    4. 神經網路:各式Activation Function、損失函數(Loss Function)、優化器(Optimizer)、效能衡量指標(Metrics),包括順序模型(Sequential model)及Functional API。

圖2. TensorFlow從基礎到進階

 

圖3. 神經網路優化求解的過程

 

  • 由核心往外擴展,學習各項工具的使用:以Keras為核心,整合其他各項工具。

圖4. TensorFlow各項工具

 

  • TensorBoard:提供模型及訓練過程視覺化的工具,也提供除錯的功能。
  • Callback:在訓練過程中設定Callback,可作模型存檔、訓練提前結束、TensorBoard整合…,甚至可自訂Callback,蒐集更多的訓練資訊。
  • Dataset:Generator資料結構,可逐批讀入資料,不必一次全部載入記憶體,造成記憶體不足,適合大型資料集的專案應用,另外支援Cache、Prefetch…等效能提升的功能。
  • Data Augmentation:結合Dataset,可提供影像資料增補的功能,包括影像偏移、旋轉、拉近/拉遠、裁切…等功能,產生更多的訓練資料,使模型更精準。
  • Keras Applications:TensorFlow提供許多的預先訓練好的模型(pre-trained model),他們都是歷屆影像辨識大賽的冠亞軍,可以直接採用其模型與權重,也可採用部分模型。
  • TF Hub:提供許多進階的pre-trained model,例如物件偵測等。
  • TF Serving:提供模型佈署的指令。

 

更多詳情可參閱『深度學習最佳入門』一書說明。