利用 TFLearn 快速搭建經典深度學習模型


 

利用 TFLearn 快速搭建經典深度學習模型

利用 TFLearn 快速搭建經典深度學習模型


使用 TensorFlow 一個最大的好處是可以用各種運算符(Ops)靈活構建計算圖,同時可以支持自定義運算符(見本公眾號早期文章《TensorFlow 增加自定義運算符》)。由於運算符的粒度較小,在構建深度學習模型時,代碼寫出來比較冗長,比如實現卷積層:5, 9

這種方式在設計較大模型時會比較麻煩,需要程序員徒手完成各個運算符之間的連接,像一些中間變量的維度變換、運算符參數選項、多個子網絡連接處極易發生問題,肉眼檢查也很難發現代碼中潛伏的 bug,會導致運行時出錯(運氣好),或者運行時不出錯但運行結果不可解釋(運氣不好),消耗大量時間和精力。

有沒有更好的實現各種經典模型的方式?

答案是肯定的!

我們今天學習一下在 TensorFlow 之上構建的高層次 API—— TFLearn【2】。

TFLearn 是一個模塊化和透明的深度學習庫,構建在 TensorFlow 之上。

它為 TensorFlow 提供高層次 API,目的是便於快速搭建試驗環境,同時保持對 TensorFlow 的完全透明和兼容性。


TFLearn 的一些特點:

  • 容易使用和易於理解的高層次 API 用於實現深度神經網絡,附帶教程和例子;

  • 通過高度模塊化的內置神經網絡層、正則化器、優化器等進行快速原型設計;

  • 對 TensorFlow 完全透明,所有函數都是基於 tensor,可以獨立於 TFLearn 使用;

  • 強大的輔助函數,訓練任意 TensorFlow 圖,支持多輸入、多輸出和優化器;

  • 簡單而美觀的圖可視化,關於權值、梯度、特征圖等細節;

  • 無需人工干預,可使用多 CPU、多 GPU;

  • 高層次 API 目前支持最近大多數深度學習模型,像卷積網絡、LSTM、BiRNN、BatchNorm、PReLU、殘差網絡、生成網絡、增強學習…… 將來會一直更新最近的深度學習技術;

心動不如行動,我們馬上就體驗!在一台已經安裝了 TensorFlow 的機器上(安裝步驟參考之前文章《TensorFlow 1.0.0rc1 入坑記》《利用 TensorFlow 集裝箱快速搭建交互式開發環境》《如何在 Windows 系統玩 TensorFlow》)直接運行以下命令:pip in

檢查安裝成功:

為了方便運行 TFLearn 附帶例程,我們需要克隆 TFLearn 源碼:h

先看看如何用 TFLearn 實現 AlexNet 用於 Oxford 17 類鮮花數據集分類任務的:

上圖為論文【1】 中的 AlexNet 結構。

TFLearn 例程中實現的 AlexNet 和論文【1】中相比做了一些修改:

  • 輸入圖像尺寸變為 227 x 227;

  • 將 2-tower 架構改為 single-tower;

  • 最后一個分類層的輸出類別數從 1000 變為 17;

運行該例程:

該程序會自動下載 Oxford 17 flowers 數據集, 選了幾個不同類別圖片如下:

運行 AlexNet 模型訓練截圖如下:

在另一個命令行窗口啟動 TensorBoard:

打開瀏覽器,輸入地址:localhost:6006,打開 TensorBoard 頁面,查看訓練過程的准確率、loss 值變化:

AlexNet 模型可視化(之一)

(之二)

模型權值分布:

模型權值的直方圖,可以看出權值訓練歷史:

通過今天內容,讀者可以看出使用 TFLearn 高層次 API 相比直接使用 TensorFlow 實現深度學習模型具有使用更簡單、構建更快速、可視化更方便等特點,從此無需手動處理各個運算符之間的連接,解放了生產力,提高了模型設計和優化效率。

作為練習,讀者可以進一步學習 TFLearn 實現其他經典深度學習模型如 VGG、Inception、NIN、ResNet 等,對比原始論文學習,相信會有更大的收獲。

參考文獻

【1】Alex Krizhevsky, Ilya Sutskever & Geoffrey E. Hinton. ImageNet Classification with Deep Convolutional Neural Networks. NIPS, 2012.

【2】 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM