在人工智慧(AI)的時代,TensorFlow已經成為機器學習跟深度學習開發的主流程式庫,其功能強大、運算效率高、支援多個平台,造就了業界和學術界的廣泛使用。然而,TensorFlow 1.x版的學習門檻較高,對剛入門的初學者來說相當難上手,對於這個問題,Google開發團隊推出了TensorFlow 2.0版。在TensorFlow 2.0引入了Eager Execution動態圖模式、Keras高階API和tf.data等三個功能,讓學習門檻大幅降低。
TensorFlow-最受歡迎的機器學習跟深度學習框架
作為最流行的機器學習框架,TensorFlow 已經成長為全球使用最廣泛的機器學習平台。目前,TensorFlow 的開發者社群包括研究者、開發者和企業等。
去年 11 月,TensorFlow 剛慶祝了自己的三歲生日。不久之後,也將迎來另一個重要里程碑—TensorFlow 2.0
TensorFlow 2.0 將專注於簡潔性和易用性,主要升級方向包括:
- 使用 Keras 和 Eager Execution 輕鬆構建模型。
- 在任意平台上實現穩健的生產環境模型部署。
- 為研究提供強大的實驗工具。
- 清理不建議使用的 API 和減少重複來簡化 API。
Google表示,在過去幾年裡,TensorFlow 增加了很多元件。通過 TensorFlow 2.0 版本的大幅度重建,這些功能將被打包成為一個綜合平台,支援從訓練到部署的整個機器學習工作流程。下圖展示了 TensorFlow 2.0 的新架構:

雖然上圖的訓練部分側重 Python API,但是 TensorFlow.js 也支援訓練模型。TensorFlow 2.0 對其他語言也有不同程度的支援,包括 Swift、R 語言和Julia。
輕鬆構建模型
TensorFlow 團隊近期宣佈 Keras API 將成為 TensorFlow 中構建和訓練模型的核心高階 API。Keras API 使得使用 TensorFlow 開啟專案變得簡單。重要的是,Keras 提供多個模型構建 API(Sequential、Functional 和 Subclassing),這樣你可以選擇適合自己專案的抽象級別。TensorFlow 的實現有多項增強,包括可直接疊代和直觀除錯的 eager execution,以及用於構建可擴充套件輸入流程的 tf.data。
在任意平台上實現穩健的生產環境模型部署
TensorFlow 總是會提供直接的產品化路徑。不論是在伺服器、邊緣裝置還是網頁上,也不論你使用的是什麼語言或平臺,TensorFlow 總能讓你輕易訓練和部署模型。在 TensorFlow 2.0 中,我們正在通過標準化交換格式和調整 API 來改進跨平臺和元件的相容性和奇偶性(parity)。
- TensorFlow Serving:允許通過 HTTP/REST 或 gRPC /協議緩衝區為模型提供服務的 TensorFlow 庫。
- TensorFlow Lite:TensorFlow 針對移動和嵌入式裝置的輕量級解決方案提供了在 Android、iOS 和嵌入式系統(如 Raspberry Pi 和 Edge TPU)上部署模型的能力。
- TensorFlow.js:支援在 JavaScript 環境中部署模型,例如通過 Node.js. TensorFlow.js 在 web 瀏覽器或伺服器端部署模型,還支援在 JavaScript 中定義模型和在 web 瀏覽器中使用類似 Keras 的 API 直接訓練模型。
- TensorFlow 還支援其它語言(由更廣泛的社群維護),包括:C、Java、Go、C#、Rust、 Julia 、R 等等。
為研究提供強大的實驗工具
TensorFlow 使得從概念到程式碼和從模型到出版物中獲取新想法變得更加容易。TensorFlow 2.0 結合了很多功能,能夠在不犧牲速度或效能的情況下定義和訓練最先進的模型:
-Keras Functional API 和 Model Subclassing API:允許建立複雜的拓撲,包括使用殘差層、自定義多輸入/輸出模型以及強制編寫的正向傳遞。
-自定義訓練邏輯:用 tf.GradientTape 和 tf.custom_gradient 對梯度計算進行細粒度控制。
-為了獲得更強的靈活性和控制,低階 TensorFlow API 始終可用,並與更高級別的抽象一起工作,以實現完全可定製的邏輯。
TensorFlow 2.0 新添了一些附加功能,讓研究人員和高階使用者可以使用豐富的外掛來進行實驗,如 Ragged Tensors、TensorFlow Probability、Tensor2Tensor 等。
除了這些功能之外,TensorFlow 還提供了易於製作原型和除錯的 eager execution,可以大規模訓練的 Distribution Strategy API 和 AutoGraph,以及對 TPU 的支援,使 TensorFlow 2.0 成為一個易於使用、可定製和高度可擴充套件的平臺,用於展開最先進的 ML 研究並將該研究轉化為生產的流水線。
TensorFlow 1.x 和 2.0 的區別
自我們開源 TensorFlow 以來,到現在已經發展出很多個版本和 API 疊代。隨著 ML 的快速發展,這個平臺也有了巨大的進展,現在支援很多具有不同需求的不同使用者。有了 TensorFlow 2.0,我們有機會基於語義版本控制來清理和模組化平臺。
此次的重大改變包括:
- 刪除 queue runner 以支援 tf.data。
- 刪除圖形集合。
- 變數處理方式的變化。
- API 符號的移動和重新命名。
此外,tf.contrib 將從核心 TensorFlow 儲存庫和構建過程中移除。TensorFlow 的 contrib 模組已經超出了單個儲存庫可以維護和支援的範圍。較大的專案最好單獨維護,而較小的擴充套件將逐漸移至核心 TensorFlow 程式碼。一個特別興趣小組(SIG)已經成立,以維持和進一步發展一些更重要的未來 contrib 專案。
相容性和持續性
為了簡化向 TensorFlow 2.0 的過渡,將會有一個轉化工具來更新 TensorFlow 1.x Python 程式碼,以使用 TensorFlow 2.0 相容的 API,或標記程式碼無法自動轉換的情況。
不是所有的變化都可以完全自動化進行。例如,一些被棄用的 API 沒有直接的等效物。這也是我們要引入 tensorflow.compat.v1 相容性模組的原因,該模組支援完整的 TensorFlow 1.x API(包括 tf.contrib)。該模組將會在 TensorFlow 2.x 的時間線內得到維護,並允許用 TensorFlow 1.x 編寫的程式碼保持功能。
此外,SavedModels 或儲存的 GraphDefs 將向後相容。用 TensorFlow 1.x 儲存的 SavedModels 將繼續在 2.x 中載入和執行。然而,2.0 中的更改意味著原始檢查點中的變數名可能會更改,所以使用 2.0 之前的檢查點而程式碼已轉化為 2.0 時,可能無法保證有效。
TensorFlow 2.0 的未來
TensorFlow 2.0 於今年年初發布了預覽版,現在已經可以使用 tf.keras 、eager execution、打包模型和部署庫來開發 TensorFlow 2.0 了,隨著順從民意、使用上更簡單的 TensorFlow 2.0 Alpha 版,TensorFlow 又將獲得怎樣的成績呢?會不會成為機器學習跟深度學習的新寵兒, 大家可以拭目以待 !
部分內容及圖片引用: https://blog.csdn.net/iodjSVf8U1J7KYc/article/details/86587096
撰文者: TibaMe AI人工智慧課程總監 Ryan
延伸課程

人工智慧 – 機器學習與深度學習
1、了解AI,了解AI,ML和DL
▪ 了解機器學習的原理
▪ 了解深度學習的原理和概念
2、學會Keras和TensorFlow深度學習模型
▪ 學會使用Keras和TensorFlow
▪ 學會建立深度學習模型
3、擁有實際建立機器學習模型的能力