自Keras於2015年3月正式發佈, 2年內, 其用戶數量從最初的1名快速增長到10萬。
近日Keras官方發佈Keras 2, 其更易於使用的新API(應用程式設計發展介面),
根據官方介紹, 此次更新的重點有兩個:
Keras 2 API 將作為 TensorFlow 框架的一部分直接向用戶提供支援;
Keras 2 API 經過了重新設計,
將成為團隊第一個長期支持(long-term-support)的 API。
與 TensorFlow 整合
儘管 Keras 自 2015 年 12 月已經作為執行時間後端(runtime backend)開始支持 TensorFlow, Keras API 卻一直與 TensorFlow 代碼庫相分離, 這種情況正在改變:從 TensorFlow 1.2 版本開始, Keras API 可作為 TensorFlow 的一部分直接使用, 這是 TensorFlow 在向數百萬新用戶開源的道路上邁出的一大步。
Keras 最好被理解為一個 API 技術規範, 而不是一個特殊的代碼庫。 事實上, 繼續發展將會出現 Keras 技術規範的兩個不同實現:(a)TensorFlow 的內部實現(如 tf.keras), 純由 TensorFlow 寫成, 與 TensorFlow 的所有功能深度相容;(b)外部的多後臺實現, 同時支持 Theano 和 TensorFlow(並可能在未來有更多的後臺)。
類似的, Skymind 正在用 Scala 實現 Keras 份額部分規範,
新 API
新的 Keras 2 API 是我們首個長期支持的 API:下個月 Keras 2 的代碼庫將在最新的軟體上開始運行數年。 為了將其變為可能, 考慮到未來會出現的問題, 我們在這次發佈中大量修改了 API。 特別是, 我們的新 API 選項完全相容 TensorFlow 規範。
大多數層的 API 有了顯著變化, 特別是 Dense、BatchNormalization 和全卷積層。 然而, 我們已經設置好了相容介面, 這樣你的 Keras 1 代碼就可以在 Keras 2 上無障礙運行了(同時發出警告來幫助你轉換對新 API 的層調用)。
訓練和評估生成器方法的 API 已經改變(如: fit_generator、predict_generator 和 evaluate_generator)。 不過, 無需擔心, Keras 1 的調用依然適用於 Keras 2。
fit、nb_epoch 已重命名為為 epochs。 我們的 API 轉換介面也適用于這項改變。
很多層所保存的權重格式已經改變。 然而, Keras 1 上保存的權重檔依然能在 Keras 2 模型上載入。
objectives 模組已更名為 losses。
與此前不相容的地方
考慮到 Keras 的廣大用戶基礎, 我們儘量不對 Keras 做根本變動, 但是, 還是有些變動不可避免, 尤其是對於更高階的用戶來講。
傳統層 MaxoutDense、TimeDistributedDense 和 Highway 已被永久移除。
大量的傳統度量和損失函數已被移除。
BatchNormalization 層不再支持 mode 參數。
由於 Keras 內部構件已經改變, 自訂層被升級。 改變相對較小, 因此將變快變簡單。 參見指南:https://keras.io/layers/writing-your-own-keras-layers/
通常來講, 任何使用非正式的 Keras 功能編寫的代碼將會失效, 因此高階使用者也許需要做一些相應的更新工作。