當前位置:
首頁 > 科技 > TensorFlow 2.0發布在即,高級API變化搶先看

TensorFlow 2.0發布在即,高級API變化搶先看

作者 | Sandeep Gupta, Josh Gordon, and Karmel Allison

整理 | 非主流、Jane

出品 | AI科技大本營

【導語】早在今年 8 月的時候,谷歌開源戰略師 Edd Wilder-James 在一封公開郵件中表示正在研發 TensorFlow 2.0,並將於今年晚些時候發布預覽版。在 2018 年最後半個月的日子裡,我們就要迎來了新版本的發布。

在之前的公開郵件中,Edd Wilder-James 曾提到過一些 TensorFlow 2.0 的設計思想和重大改變:易用性將成為重點、Eager Execution 將會是核心功能、支持更多的平台和語言等。

而且未來所有的 tf.contrib 都會被棄用,對於每個 contrib 模塊,要麼 a)將項目集成到 TensorFlow 中;b)將其移至單獨的存儲庫;c)完全將其移除。

在這篇文章中,我們將預覽 TensorFlow 中高級 API 的未來方向,並回答大家常問的一些問題。

Keras 是廣受開發者社區歡迎的高級 API,主要用於構建和訓練深度學習模型。它可以用於快速原型設計、最先進的研究以及實際生產。雖然 TensorFlow 已經支持 Keras,但是 2.0 版本將實現更加緊密的集成。

Keras有以下幾大關鍵優點:用戶友好、模塊化、可組合、容易擴展,既適合新手,也適合專家。這些優點加起來。可以讓學習、研究、開發、部署的工作流更加容易,效率更高。通過將 Keras 構建為 TensorFlow 的高級 API,機器學習領域的新手可以更容易上手。通過單一的高級 API 可以減少混淆,讓我們能夠專註於為研究人員提供高級功能。

TensorFlow 2.0 版本發布在即。我們會先解答下大家比較關注的幾個問題,然後我們會介紹 TensorFlow 2.0 中關於Keras 的一些新功能和重大變化,如Sequential API、Functional API、Model Subclassing API 與 Estimators 等。

FAQ

1、問:Keras 是否是一個獨立的庫?

2、問:Keras 只是 TensorFlow 或其他庫的一個包裝器嗎?

答:不,這是一個常見的(但可以理解的)錯誤觀念。 Keras 用於定義和訓練機器學習模型的 API 標準,它與特定實現無關:除了 TensorFlow,Keras API 還可以用於 MXNet,TypeScript,JavaScript,CNTK,Theano,PlaidML,Scala,CoreML 和其他庫的實現。

3、問:TensorFlow 內置的 Keras 版本與 keras.io 上的版本有什麼區別?

答:TensorFlow 包含 Keras API(在 tf.kerasmodule 中)的實現,具有 TensorFlow 特定的增強功能,包括支持 Eager Execution,方便直觀調試和快速迭代,支持 TensorFlow SavedModel模型交換格式,以及分散式訓練(包括 TPU)。

當用到 tf.keras 模塊的子類 API 時,Eager Execution 特別有用。這類 API 受到 Chainer 的啟發,大家通過命令行就可以編寫模型。tf.keras 與 TensorFlow 的生態系統緊密結合,可以支持:

tf.data 用於構建高性能的輸入流。你可以用 Numpy 處理的數據來訓練模型,或者用 tf.data 來衡量規模和性能。

分布策略。在跨各種計算平台時進行分散式訓練,包括分布在很多機器上的 GPU 和 TPU。

輸出模型。通過 tf.keras APIs 創建的模型可以在 TensorFlow SavedModel 格式下進行序列化,並且可以使用 TensorFlow Serving 或通過其他語言(Java、Go、Rust、C#等)進行綁定。

模型可以使用 TensorFlow Lite 部署在移動或嵌入式設備上,也可以使用 TensorFlow.js。(也可以使用與此相同的 Keras API 直接在 JavaScript 中開發模型。)

特徵列,用於有效地表示和分類結構化數據。

如何安裝 tf.keras?我是否需要先通過 pip 安裝 Keras ?

因為 tf.keras 是包含在 TensorFlow 內的,所以,大家不用單獨安裝 Keras。如果在 Colab 中你可以直接運行下面的代碼:

然後你就可以使用 tf.keras 了。如果你是安裝新手,可以通過近期教程中的一些例子來檢查是否導入成功。

5、TensorFlow 為專家和新手提供了不同 API,如何使用?

TensorFlow 的開發者們經驗、層次都不同,有剛接觸 ML 的學生們、也有 ML 領域的專家或研究者。而 TensorFlow 的一個優點就是它提供了不同的 APIs 支持不同的工作流和目標。這也是 TensorFlow 的 Keras 集成的一個主要目標,可以讓用戶選擇對自己更有益處的部分,而無需採用 Keras 的整體框架。

Sequential API

如果你正在學習機器學習,我們 建議你從 tf.keras Sequential API 開始,它非常直觀、簡潔,適用於機器學習中 95% 的問題。使用這個 API,10 行代碼就能搭建一個神經網路。

參考案例:

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/_index.ipynb

定義模型的最常用方法是構建神經網路的層圖,最簡單的模型類型是把這些層堆疊起來。 你可以使用 Sequential API 來定義這樣的模型,如下所示:

在 「Learn and UseML」章節下面,你可以找到更多使用 the Sequential API 的教程,參考鏈接:

https://www.tensorflow.org/tutorials/

Functional API

當然,順序模型是一個簡單的神經網路層堆棧,不能代表任何模型。不過,你可以使用 Functional API 來構建更高級的模型,定義複雜的拓撲結構,包括多輸入和多輸出模型,具有共享層的模型以及具有殘差連接的模型。

使用 Functional API 構建模型時,神經層是可調用的,並可以返回張量作為輸出。然後可以使用這些輸入張量和輸出張量來定義模型。 例如:

上面的模型同樣可以使用簡單的代碼來進行編譯和訓練。

Model Subclassing API

如果你想搭建完全可自定義的模型,那麼可以使用 Model Subclassing API。在類方法(class method)的主體中,你必須以這種方式定義前向傳播。

這樣的模型更靈活,但是也更難調試。所有這三種類型的模型三種類型的模型都可以使用前面顯示的簡單編譯和調整命令來編譯和訓練,或者你可以編寫自己的定製訓練循環來實現完全控制。

例如:

更多 the Model Subclassing 的案例,可以在「research and experimentation」章節中查看教程,參考鏈接:

https://www.tensorflow.org/tutorials/

使用 the Model Subclassing API 實現的 Neural Machine Translation with Attention

使用 the Model Subclassing API實現的 GAN

如果這些模型都無法滿足你的研究?

如果你發現 tf.keras 限制了你的應用領域,你還有其他選擇:

同時,你也可以完全忽略 tf.keras,使用較低層級的 TensorFlow,Python 和 AutoGraph 來獲得你想要的結果。

Estimators會發生哪些變化?

Estimator 在 Google 和 TensorFlow 社區的應用都十分廣泛。 我們已經將幾種模型打包為 Premade Estimators,包括線性分類器,DNN 分類器,組合 DNN 線性分類器(又名 寬深模型)和梯度增強樹。 這些模型已經投入生產並得到廣泛部署,由於這些原因,包括 Premade Estimators 在內的Estimator API 將包含在 TensorFlow 2.0 中。

對於 Premade Estimators 的用戶來說,Keras 和 Eager Execution 焦點變化帶來的的影響將是微乎其微的。我們可能會更改 Premade Estimators 的實現,同時保持 API 的界面相同。我們還將努力添加作為 Premade Estimators 實現的模型的 Keras 版本,並擴展 Keras 以更好地滿足大規模生產的要求。

也就是說,如果你正在開發自定義體系結構,那我們建議使用 tf.keras 來構建模型而不是Estimator。如果你正在構建需要用到 Estimators 的基礎架構,那麼可以使用model_to_estimator() 來轉換模型,同時我們也努力確保Keras可以跨TensorFlow生態系統工作。

進擊到TensorFlow 2.0!

希望大家可以和我們一樣喜歡使用 tf.keras 。在接下來幾個月的時間,TensorFlow 團隊將關注於提升開發者們的體驗。在我們的文檔和教程里也將會體現這點。我們也期待您的想法和反饋,並通過 Github issues 和 PRs 為項目作出貢獻。感謝大家!

社區資源:

https://www.tensorflow.org/community/

https://medium.com/tensorflow/standardizing-on-keras-guidance-on-high-level-apis-in-tensorflow-2-0-bad2b04c819a


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

周傲英、熊輝、李飛飛邀您共享技術嘉年華!BDTC 八折優惠現已進入兩日倒計時
AI應屆博士生年薪八十萬,貴嗎?

TAG:AI科技大本營 |