上周在Sunnyvale舉辦的TensorFlow開發峰會上,Google釋出了最新一版的TensorFlow: 2.0 Alpha版本。
它較原先的1.x版本有什麼改進呢?我們知道作為一個算法研究工具,tensorflow相較于同類型産品,編碼是較為複雜的,需要引入額外的“搭建階段(Construction Phase)”來建立視圖,建立會話,初始化變量等等。同樣是一段計算一串等比數列(1,1/2,1/4...)前50項之和,PyTorch的代碼隻有區區幾行:
而在Tensorflow則要經曆環境和執行階段的建構工作。
結構的複雜性同時會延長前期入門人員的學習曲線及增大後期Debug的排障難度。而在TensorFlow2.0中,産品組從使用者角度出發,簡化了流程,不再需要建立使用者會話,與Python語言更加融合,并統一了API的調用接口。
舉個例子,原來我們要計算兩個數乘積的平方根,需要定義視圖,建立會話,設定變量。
在TensorFlow2.0中,系統省去了建立會話的麻煩。
嗯,快速執行(Eager Execution)看似簡化了編碼的工作,那效率怎樣呢?會比通過使用者會話層互動更快麼?經過TF團隊大量案例的測試,答案是“幾乎一樣快”。我們知道視圖是建立在會話之上的,但是通過優化視圖,使其在接收大量訓練資料的時候仍能保持較高的響應速度。這裡我們可以将一系列算法定義為一個全局函數,以提高處理大量資料的效率。
在TensorFlow建立一個真正的數學模型時,我們知道以往可以通過tf.slim,tf.layers,Keras或者從原始算法開始做複合編譯。TF2.0整合了之前複雜的函數接口,統一了原本形形色色的編譯語言。若要支援上文提到的快速部署,API必須滿足Keras接口标準。在早期需要動辄上百行的模型代碼,現在也隻要了了是幾行就可實作,甚至比PyTorch還要精煉。
此外,TF2.0還支援與TensorBoard的調用互動。
這樣我們在TensorBoard裡可以直覺看到即時的模型訓練情況,适時地調整預期,檢視偏移曲線。
對于任何一款工具的大版本變動,原先的開發人員必定需要花時間重新熟悉和了解,對于新人來說,拿TF2.0作為起步工具勢必直接可以得到事半功倍的效果。
關注公衆号“達摩院首座”,一起開源一起嗨!