深度學習庫 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 有效提升了研發效率,
融入 TensorFlow,成為深度學習的通用語言
在本次版本更新中,最重要的一項內容就是增強了 Keras 與 TensorFlow 的邏輯一致性。按照 Keras 在博客中的說法:“這是將 Keras API 整合到 TensorFlow 核心的一個重要的準備步驟”。
實際上,從 2015 年 12 月的版本開始,
Keras 在博客中表示,他們更願意人們將 Keras 視為一種通用的 API 規範,而不僅僅是一個具體的代碼庫。在這個意義上,他們將此前的 Keras 實現歸結為兩個大類:
TensorFlow 的內部實現,也就是前不久在 TensorFlow 1.0 版本中發佈的 tf.keras 模組,
通用實現,相容多種運行後端,包括 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 更新的要點包括:
大部分軟體層的 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 正式發佈 你需要知道的都在這裡
許多圖層的保存權重格式已更改。同樣,以從前的權重保存的檔仍然可以在 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 正式發佈 你需要知道的都在這裡