深度學習可用的工具很多,例如,Google開發的深度學習平台TensorFlow。但是TensorFlow使用起來相對複雜,所以本教材使用易用性更好的Keras來講解深度學習的具體實現。
Keras是由純Python編寫的深度學習框架,使用TensorFlow、Pytorch或者CNTK作為後端運行。用純Python編寫意味著所有的Keras代碼都是通過Python語句實現的,可以通過Python的代碼編輯工具打開源代碼進行學習。在學習Python編程的過程中,閱讀Keras經典模塊的Python代碼是一種非常好的學習方式。
在Keras開發團隊寫的官方文檔中,他們詳細說明了設計Keras時遵循的原則。
(1)用戶友好
Keras是為人類而不是“天頂星人”①設計的API,用戶的使用體驗始終是我們考慮的首要和中心內容。Keras遵循減少認知困難的最佳實踐:Keras提供一致而簡潔的API,能夠極大減少一般應用下用戶的工作量,同時,Keras還提供清晰和具有實踐意義的bug反饋。
(2)模塊性
模型可理解為一個層的序列或數據的運算圖,完全可配置的模塊可以用最少的代價自由組合在一起。具體而言,網絡層、損失函數、優化器、初始化策略、激活函數、正則化方法都是獨立的模塊,你可以使用它們來構建自己的模型。
(3)易擴展性
添加新模塊超級容易,隻需要仿照現有的模塊編寫新的類或函數即可。創建新模塊的便利性使得Keras更適合於先進的研究工作。
(4)與Python協作
Keras沒有單獨的模型配置文件類型(作為對比,caffe有),模型由Python代碼描述,這樣可以使其更緊湊和更易debug,也更易擴展。
作為一種高級深度學習工具,Keras構造深度學習網絡簡單直接、容易閱讀,同時它能夠自動構建層與層之間的連接,更便於學習者體會深度學習的能力。選用Keras作為深度學習的入門工具的原因如下。