市面上有許多深度學習的框架(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)。
1.官方的教學資源(https://www.tensorflow.org/overview)主要有兩個頁籤『教學』(Tutorial)與『指南』(Guide),建議讀者先從『指南』入門,而非『教學』,教學其實是針對影像/文字/音訊作專題式的介紹。
2.從基礎到進階,逐步理解神經網路設計的原理。
2.1張量(Tensor)運算:包括向量、矩陣的運算。
2.2自動微分(Automatic Differentiation):梯度計算、優化(Optimization)、神經網路梯度下降求解。
2.3各式神經層:包括Dense、卷積(Conv1D、Conv2D、Conv3D)、循環神經層(RNN、LSTM、GRU)等。
2.4神經網路:各式Activation Function、損失函數(Loss Function)、優化器(Optimizer)、效能衡量指標(Metrics),包括順序模型(Sequential model)及Functional API。
圖2. TensorFlow從基礎到進階
圖3. 神經網路優化求解的過程
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:提供模型佈署的指令。
更多閱讀請點我。