昨天, 著名深度學習開源庫 Keras 通過官方博客正式發佈了全新版本:Keras 2。
根據官方介紹, 此次更新的重點有兩個:
Keras 2 API 將作為 TensorFlow 框架的一部分直接向用戶提供支援;
Keras 2 API 經過了重新設計, 將成為團隊第一個長期支持(long-term-support)的 API。
Keras 表示:從 2015 年 3 月發佈第一個版本以來, 有數以百計的開發人員對 Keras 的開原始程式碼做了完善和拓展, 數以千計的熱心用戶在社區對 Keras 的發展做出了貢獻。 目前, 有大量的 AI 初創公司在 Keras 的幫助下掛牌成立, 大量的研究人員通過 Keras 有效提升了研發效率, 大公司的工程師們則通過 Keras 大大簡化了他們的工作流程。 更為重要的是, 通過使用 Keras, 更多的從前完全沒有機器學習開發經驗的用戶, 從此步入了深度學習的世界。
融入 TensorFlow, 成為深度學習的通用語言
在本次版本更新中, 最重要的一項內容就是增強了 Keras 與 TensorFlow 的邏輯一致性。 按照 Keras 在博客中的說法:“這是將 Keras API 整合到 TensorFlow 核心的一個重要的準備步驟”。
實際上, 從 2015 年 12 月的版本開始, Keras 就已經支持用戶將 TensorFlow 作為運行後端(runtime backend), 但此前, Keras 的 API 與 TensorFlow 的代碼庫尚處於相互隔離的狀態。 未來, 從 TensorFlow 1.2 版本開始, Keras 2 API 將作為 TensorFlow 框架的一部分直接向用戶提供支持, Keras 在博客中表示:“這是 TensorFlow 實現下一個百萬使用者級目標的關鍵”。
Keras 在博客中表示, 他們更願意人們將 Keras 視為一種通用的 API 規範, 而不僅僅是一個具體的代碼庫。 在這個意義上, 他們將此前的 Keras 實現歸結為兩個大類:
TensorFlow 的內部實現, 也就是前不久在 TensorFlow 1.0 版本中發佈的 tf.keras 模組, 完全基於 TensorFlow 編寫, 並且與所有 TensorFlow 功能深度相容;
通用實現, 相容多種運行後端, 包括 Theano 和 TensorFlow 等(將來可能會支持更多其他的後端)。
類似的, 知名 Java 深度學習庫 Deeplearning4j 目前正在基於 Scala 語言實現 Keras 規範的一部分,
這些例子正符合了 Kera 成為一種通用的 API 規範的發展定位。 按照 Keras 在博客中的說法:“Keras API 意在成為一個深度學習實踐者的通用語言, 一個跨越多種不同的工作流、獨立於各種底層平臺的深度學習通用語言”。
重新設計, 成為第一個長期支持的 API
Keras 2 的另一項重要更新是 API 的變化。 Keras 在博客中表示, 全新發佈的 Keras 2 API 將成為團隊第一個長期支持的 API, 不但相容目前最新的軟體, 而且未來將保持長期有效。 為了實現這一點, Keras 重新設計了絕大部分 API, 為將來的擴展和更新預留了充足的修改空間。 值得一提的是, 新設計的 API 完全相容于穀歌 TensorFlow 規範。
此次 API 更新的要點包括:
大部分軟體層的 API 介面都和從前完全不同,
生成器訓練和評估方法相關的 API 也已經改變(包括 fit_generator、predict_generator 和 evaluate_generator 等)。 同樣, Keras 1 的代碼仍然可以運行;
在 fit 中, nb_epoch 已經被更名為 epochs。 而且, 這一更改也適用於 API 轉換介面;
許多圖層的保存權重格式已更改。 同樣, 以從前的權重保存的檔仍然可以在 Keras 2 中載入;
objectives 模組已經被更名為 losses。
與此前不相容的地方
由於 Keras 2 是一次重大的版本更新, 因此無法避免地要引入一些與此前版本不相容的地方, 特別是對於高級使用者而言, 這些資訊至關重要:
包括 MaxoutDense、TimeDistributedDense 和 Highway 在內的舊版軟體層已經被永久刪除;
許多舊版的指標(metrics)和損失函數(loss functions)被刪除;
BatchNormalization 層不再支持 mode 參數;
由於內核代碼已經改變, 因此自訂層必須全部更新。 不過由於修改相對不大, 因此更新應該不會太耗時, 更新詳情參見: https://keras.io/layers/writing-your-own-keras-layers/
所有使用未記錄的(undocumented) Keras 函數的程式碼片段可能都已經不可用;因此高級使用者需要進行一些修改。
目前 Keras 2 已經在 Github 上開源: https://github.com/fchollet/keras
用戶可以通過 PyPI 直接更新: pip install keras --upgrade
TensorFlow和Caffe、MXNet、Keras等其他深度學習框架的對比
TensorFlow 1.0 正式發佈 你需要知道的都在這裡