TensorFlow 2.0 帶來了大量改變。谷歌工程師 Cassie Kozyrkov 表示:之前的 TensorFlow 已死,而新版 TensorFlow 使它獲得重生。
如果你是 AI 鐵粉,但恰好沒看到這個重大新聞,這可能就像在地震來臨之際打了個盹。一切都將改變。
![TensorFlow 2.0](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103124.jpg)
這是什麼?TensorFlow 的 logo?還是回答真/假判斷題的字母?
去年我寫了 9 件關於 TensorFlow 你需要了解的事。但是你需要明確知道的一件事是:TensorFlow 2.0 到來了!一場新革命!歡迎來到 TensorFlow 2.0。
這是一次顛覆性的改造。TensorFlow 2.0 的到來將對每個行業造成巨大的連鎖反應,等着瞧吧。如果你是 2019 年剛開始用 TF 的新手,那你就特別幸運了,因為你選擇了最好的時間進入 AI 的世界(如果你的舊教程中有「session」一詞,你可能想從頭開始)。
簡而言之:TensorFlow 已經覆蓋了 Keras!請站穩、扶好。
扎心的體驗
我對很多人熱愛 TensorFlow1.x 表示懷疑。這像是人工智能的工業車床,它對用戶友好。但充其量,你可能只因為它能完成令人難以置信的 AI 任務而對它心懷感激而已。
![扎心的體驗](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103145.jpg)
如果你說 TensorFlow 1.x 很容易上手,那你可能會遭到別人的白眼。它陡峭的學習曲線使普通用戶望而卻步,而掌握了它就像你在失去腳趾的情況下登頂了珠峰。有趣嗎?不。
![你不是一個人——每個人對 TensorFlow 1.x 教程的感覺都是這樣的……](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103159.jpg)
你不是一個人——每個人對 TensorFlow 1.x 教程的感覺都是這樣的……
TensorFlow 的核心優勢在於性能。它的設計是為了將模型能從研究遷移到大規模生產中,但是 TF 1.x 讓你心力交瘁。堅持下去,你就能夠加入 ML 從業者的行列,他們用它做很多不可思議的事情,比如尋找新的行星、探索先進的醫療手段。
然而,如此強大的工具掌握在如此少的人手中,真是可惜······不過現在,情況不同了。
![不要擔心張量(tensor)是什麼。以前它被稱作(廣義)矩陣。TensorFlow 這個名稱是對 TF 非常擅長執行涉及多維數組(呃,矩陣)的分佈式計算這一事實的肯定,這在 AI 領域是經常出現的。(圖源:http://karlstratos.com/drawings/drawings.html)](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103228.jpg)
可愛又迷人的角色——Keras
我們已經介紹了扎心的「仙人球」,現在來談談你真正想要擁抱的東西。我在工作的地方無意中聽到一句話:「我想我真的很喜歡 Keras。」
Keras 是一個逐層構建模型的規範,它與多個機器學習框架一起工作(所以它不是 TF 的工具),但你可能知道從 TensorFlow 中可以訪問其高級 API tf.keras。
![Keras](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103249.jpg)
Keras 由純 Python 編寫而成,它總是以人為本——設計靈活、簡單易學。
魚和熊掌能兼得嗎?
為什麼我們必須在 Keras 的簡單操作和傳統 TensorFlow 的強大性能之間做出抉擇?怎麼才能兼得呢?
![](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103305.jpg)
魚和熊掌可以兼得——這就是 TensorFlow 2.0。
![圖中是 TensorFlow 2.0。網址:https://www.tensorflow.org/overview,你可以在該網頁隨意嘗試這些橙色按鈕。
「我們認為你不需要在簡單的 API 和可擴展的 API 之間做出選擇。我們想要一個更高級的 API,帶你直接從 MNIST 到天上繁星。」——Karmel Allison,Google TensorFlow 工程負責人](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103324.jpg)
「我們認為你不需要在簡單的 API 和可擴展的 API 之間做出選擇。我們想要一個更高級的 API,帶你直接從 MNIST 到天上繁星。」——Karmel Allison,Google TensorFlow 工程負責人
易用性革命
展望未來,Keras 將成為 TensorFlow 的高級 API,它已經經過了擴展,因此你可以直接從 tf.keras 使用 TensorFlow 的所有高級功能。所有 TensorFlow 都具備 Keras 的易用性,可在各種規模和各種硬件上使用。
![Keras 將成為 TensorFlow 的高級 API](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103346.jpg)
在新版本中,所有你最討厭的 TensorFlow1.x 特性都沒有了。只是為了將兩個數字加在一起,就必須採用「暗黑」操作?再見。TensorFlow Sessions?再見。用一百萬種方法做同樣的事情?再見。切換硬件或規模就要重寫代碼?再見。要寫一大堆的樣板文件?再見。可怕的無法執行的錯誤信息?再見。陡峭的學習曲線?再見。
TensorFlow 已成為過去時,TensorFlow 2.0 萬歲!
你覺得會有大陷阱是嗎?性能會變得糟糕?再猜!我們不會放棄性能。
TensorFlow 現在很可愛,這是一個遊戲規則改變者,因為它意味着我們這個時代最強大的工具之一撤掉了它的高牆。各行各業的技術愛好者都有了參與其中的權利,因為新版本的開放讓研究人員不再頭疼,也讓那些使用以前版本而遭受「痛苦經歷」的人能再度積极參与其中。
我們這個時代最強大的工具之一撤掉了它的高牆。
TensorFlow 2.0 歡迎所有人。
令人滿意的 Eager
在 TensorFlow 2.0 中,eager execution 是默認模式。甚至在 eager context 中,你也可以利用圖,使調試和原型設計變得簡單,而 TensorFlow 運行時則負責底層性能和擴展。
TensorFlow 1.x(聲明式編程)中的糾纏圖讓許多人摸不着頭腦,但現在,eager execution(命令式編程)讓大家擺脫了這個噩夢。如果你之前沒學習過這部分,那就更好了。TF 2.0 對每個人來說都是一個新的開始。
簡單到一個就足夠
許多 API 在 TensorFlow Keras 下得到了整合,所以現在你更容易知道什麼時候應該使用什麼。例如,現在只需要使用一組優化器和一組度量標準。需要設置多少層?你猜到了!一個!這就是 Keras 的風格。
事實上,整個工具生態系統得到了一次大掃除,從數據處理流程到簡單的模型導出,再到 TensorBoard 與 Keras 的集成,現在只要一行即可實現!
![](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103424.jpg)
還有一些很棒的工具可以切換和優化分佈策略,從而獲得驚人的擴展效率,同時又不會失去 Keras 本身的便利性。
![](https://easy-ai.oss-cn-shanghai.aliyuncs.com/2019-04-03-103433.jpg)
這些分佈策略都很棒,不是嗎?
問題
如果性能不是問題,那一定還有別的陷阱對吧?
事實上,到目前為止,問題就是用戶等待了太久。TensorFlow 在開發一個友好的版本時,要求用戶有相當多的耐心。這不是故意刁難用戶。開發深度學習工具是一個新的領域,我們一直在沿着這個方向前進。彎路是不可避免的,但我們在此過程中學到了很多東西。這不是故意刁難用戶。深度學習是一個未知的領域。
TensorFlow 社區投入了大量的精力來創造這份奇蹟,然後再次付出更多的努力打磨這顆最好的寶石,同時打磨掉不好的設計。這個計劃不會強迫你永遠使用未磨好的「原石」,但也許你已經習慣了這種不舒服,你沒有意識到這是暫時的。感謝你的耐心等待!我們不會放棄性能!
回報就是你所欣賞的關於 TensorFlow 1.x 的一切都還在,它們在一致的 API 下,且刪除了大量的重複功能,因此使用起來更清晰。即使是錯誤信息,也清理得簡明扼要、易於理解、易於操作。它的性能仍然強大!
最重要的事情
hater 可能會說 v2.0 中的大部分特性都可以在 v1.x 中拼湊出來,只要你搜索得足夠多,所以有什麼可大驚小怪的呢?好吧,不是每個人都想花費時間在沙裡淘金。改造和清理工作值得大家的掌聲。但這不是最重要的事情。
不容錯過的一點是:TensorFlow 剛剛宣布了對易用性的關注,這一點不容妥協。這是人工智能民主化進程中前所未有的一步!
AI 可自動執行任務,你無需再想相關的說明。它可以自動化描述不出的內容。民主化意味着大規模的人工智能將不再是少數精英的專屬了。
現在任何人都可以引舵!
想像一下未來「我知道如何用 Python 開發東西」和「我知道如何用 AI 開發東西」同樣司空見慣,這幾乎可以用「顛覆」二字來形容。
遷移
我們知道升級到新版本是一項艱苦的工作,尤其是當這些變化如此巨大時。如果你準備將代碼庫遷移至 2.0,那麼你並不孤單,Google 將執行同樣的操作,谷歌擁有世界上最大的代碼庫。隨着我們的深入,我們將分享遷移指南來幫助大家。
我們提供了很好的工具來簡化遷移。
如果你依賴於特定的功能,那麼除了 contrib 其他都沒什麼問題,所有 TF 1.x 的功能都將存在於 compat.v1 兼容模塊中。我們還提供一個腳本(http://bit.ly/tfupgrade),它會自動更新代碼,使其在 TensorFlow 2.0 上運行。更多信息參見以下視頻:
如果你希望深入了解 TF 2.0 和如何處理代碼片段,那麼這個視頻是一個很好的資源。
對小白來說
TF 2.0 是初學者的天堂,所以對於那些一直期待看着菜鳥們遭遇過來人痛苦的人來說,這不會發生了。
如果你希望使用 TensorFlow 來欺負新員工,你可能需要「另闢蹊徑」了。如果你是 TensorFlow 初學者,你可能會在 AI 派對上遲到,但是很多人都會遲到。現在就是入場的最佳時間!
待在場外可能是明智的選擇,因為現在才是入場的最佳時機。2019 年 3 月,TensorFlow 2.0 Alpha 版本已經可用,所以現在學習它可以讓你及時準備好迎接下個季度發佈的完整版本。TF 2.0 是初學者的天堂。
隨着 TF 2.0 的大量變化,你不會成為當初想像的那種初學者。比賽場地變得平坦,比賽變得更加輕鬆,而且有一個座位專門為你而留。歡迎!我很高興你終於到了這裡,我希望你和我一樣對這個新世界感到興奮。
加入吧!
查看重新設計的 tensorflow.org(http://bit.ly/tfdotorg),獲取教程、示例、文檔和工具,來幫助入門……或者直接使用以下命令:
pip install tensorflow == 2.0.0-alpha0
詳細說明參見:http://bit.ly/tfalpha。
本文轉載自 機器之心,原文地址
Comments