TensorFlow 2 是一個與 TensorFlow 1.x 使用體驗完全不同的架構,TensorFlow 2 不相容TensorFlow 1.x 的代碼,同時在程式設計風格、函數接口設計等上也大相徑庭,TensorFlow 1.x的代碼需要依賴人工的方式遷移,自動化遷移方式并不靠譜。
TensorFlow 2 支援動态圖優先模式,在計算時可以同時獲得計算圖與數值結果,可以代碼中調試實時列印資料,搭建網絡也像搭積木一樣,層層堆疊,非常符合軟體開發思維。
以簡單的a + b的相加運算為例,在 TensorFlow 1.x 中,首先建立計算圖, 建立計算圖的過程就類比通過符号建立公式 = + 的過程,僅僅是記錄了公式的計算步
驟,并沒有實際計算公式的數值結果,需要通過運作公式的輸出端子,并指派 =2.0, = 4.0才能獲得的數值結果
tensorflow 1.x
接下來我們使用 TensorFlow 2 來完成a+b運算
tensorflow 2.0
運作結果
這種運算時同時建立計算圖 + 和計算數值結果a+b的方式叫做指令式程式設計,也稱為動态圖優先模式。TensorFlow 2 和 PyTorch 都是采用動态圖(優先)模式開發,調試友善,所見即所得。一般來說,動态圖模型開發效率高,但是運作效率可能不如靜态圖模式,TensorFlow 2 也支援通過 tf.function 将動态圖優先模式的代碼轉化為靜态圖模式。