您的位置:首頁>科技>正文

深度學習庫 Keras 2 重磅發佈,與 TensorFlow 聯繫更緊密

昨天, 著名深度學習開源庫 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 規範的一部分,

即 ScalNet;而為了讓 Keras 在流覽器中運行, Keras.js 團隊也在基於 JavaScript 實現一部分 Keras API。 這樣的例子還有很多。

這些例子正符合了 Kera 成為一種通用的 API 規範的發展定位。 按照 Keras 在博客中的說法:“Keras API 意在成為一個深度學習實踐者的通用語言, 一個跨越多種不同的工作流、獨立於各種底層平臺的深度學習通用語言”。

重新設計, 成為第一個長期支持的 API

Keras 2 的另一項重要更新是 API 的變化。 Keras 在博客中表示, 全新發佈的 Keras 2 API 將成為團隊第一個長期支持的 API, 不但相容目前最新的軟體, 而且未來將保持長期有效。 為了實現這一點, Keras 重新設計了絕大部分 API, 為將來的擴展和更新預留了充足的修改空間。 值得一提的是, 新設計的 API 完全相容于穀歌 TensorFlow 規範。

此次 API 更新的要點包括:

大部分軟體層的 API 介面都和從前完全不同,

特別是 Dense、BatchNormalization 和所有卷積相關的層。 但由於軟對設置了相容介面, 因此 Keras 1 的代碼不經修改仍然可以在 Keras 2 上運行(但會出現列印警告);

生成器訓練和評估方法相關的 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 正式發佈 你需要知道的都在這裡

Next Article
喜欢就按个赞吧!!!
点击关闭提示