TensorFlow2.0 問世,Pytorch還能否撼動老大哥地位?

TensorFlow 2.0 preview

關於TensorFlow 2.0 preview,在谷歌開源戰略師 Edd Wilder-James 曾將公開的一封郵件就有介紹,TensorFlow 2.0 預覽版將在今年正式發佈,並稱其是一個重大的里程碑。將會把重點放在易用性上,而 Eager Execution 將會是 TensorFlow 2.0 的核心功能。

注:“Eager Execution”是一個命令式、由運行定義的接口,一旦從 Python 被調用可立即執行操作,這使得
TensorFlow 的入門變得更簡單,也使得研發工作變得更直觀。

在這裏插入圖片描述

TensorFlow 2.0 上線

TensorFlow 2.0 preview終於上線了,看來穩定版距離我們也不會太遠——按照官方說法會是今年的第一個季度。
谷歌表示,在過去幾年裏,TensorFlow 增加了很多組件。通過 TensorFlow 2.0 版本的大幅度重建,這些功能將被打包成爲一個綜合平臺,支持從訓練到部署的整個機器學習工作流程。下圖簡要展示了 TensorFlow 2.0 的新架構:
在這裏插入圖片描述
Note:雖然上圖的訓練部分側重 Python API,但是 TensorFlow.js 也支持訓練模型。TensorFlow 2.0 對其他語言也有不同程度的支持,包括 Swift、R 語言和 Julia。

市場佔有率

全球情況

2.0發佈會還把TensorFlow目前的家底透露了一遍:目前TF在全球已經有超過4100萬的下載次數,社區有超過1800多個貢獻者。
在這裏插入圖片描述
發佈會現場展示一張全球地圖,但是沒有透露中國社區的情況,這怎麼可以?
在這裏插入圖片描述
官方圖

中國概覽

下面是我用中文搜索引擎–百度指數統計通過搜索量數據來側面觀察下兩個主流深度學習框架tensorflow 與pytorch的變化,得到的結果如下圖:


上圖是進一年以來國內的深度學習兩個主流框架tensorflow 與pytorch之間的對比,很明顯的可以看出
tensorflow遠勝於pytorch.尤其在有TF2.0消息公佈後,搜索指數差距拉大了。

人羣屬性上來說20~29以及 30-39之間的人羣來說,年輕化的人羣更傾向於pytorch,老程序員更傾向於tensorflow。
在這裏插入圖片描述

TensorFlow與PyTorch區別

  1. 安裝環境
    首先在系統上的支持:all in . 不過值得注意的是在2018Pytorch v0.4.0支持windows平臺的。

  2. CPU和GPU
    TensorFlow 有針對的CPU和GPU安裝模塊,而 PyTorch並不像TensorFlow一樣已經指定好CPU和GPU,如果在項目中想要同時支持GPU和CPU,將會產生更多代碼。

  3. 安裝過程
    基於Anaconda 的兩個深度學習模塊都可以直接通過Pip來安裝。

  4. 是否適合新手
    TensorFlow 1.x與 PyTorch對比來說,個人認爲PyTorch好些,但是在tensorflow 2.0發佈後根據其新特性,Tensorflow 2.0 將於PyTorch不相上下。

下面是具體一些方面的對比:
PyTorch與TensorFlow 1
例如要計算 1 + ½ + ¼ + ⅛ + … ,使用 PyTorch 的代碼明顯比 TensorFlow 簡單:
在這裏插入圖片描述
後來從 TensorFlow 1.4 開始,可以選擇啓動 eager 模式。
在這裏插入圖片描述
TensorFlow 2.0, eager execution 是默認的,不需要啓用它:
在這裏插入圖片描述
可以發現eager 模式和 PyTorch 一樣簡單.

  1. 效果上
    個人認爲針對不同需求、不同算法選擇不同,沒有絕對的好與不好。

TensorFlow2.0新特性

下面我們具體來看下2.0版本的新特性:2.0版本具有簡易性、更清晰、擴展性三大特徵,大大簡化API;提高了TensorFlow Lite和TensorFlow.js部署模型的能力;

TensorFlow2.0 Alpha概括一下即:

  • 更易用:

諸如tf.keras等高級API將更易於使用;並且Eager execution將成爲默認設置。

  • 更清晰:

刪除了重複的功能;不同API的調用語法更加一致、直觀;兼容性更加完善。

  • 更靈活:

提供完整的低級API;可在tf.raw_ops中訪問內部操作;提供變量、checkpoint和層的可繼承接口。

主要變化簡要總結

  • API清理
    許多API 在TF 2.0中消失或移動。一些主要的變化包括刪除tf.app,tf.flags與 tf.logging,支持開源的 absl-py(Google自己的Python代碼庫)。

  • Eager Execution 將成爲核心功能

    可能 TensorFlow 2.0 最明顯的改變就是將 Eager execution 作爲默認優先模式。這表明任何運算在調用後就會立即運行,我們不再需要預先定義靜態圖,再通過「tf.Session.run()」執行圖的各個部分。

    # TensorFlow 1.X
    outputs = session.run(f(placeholder), feed_dict={placeholder: input})
    # TensorFlow 2.0
    outputs = f(input)

  • 代碼風格以 Keras 爲主

很多函數如 optimizer,loss,metrics 會統合到 Keras 中

  • 支持更多的平臺和語言

1.0到2.0過渡

自動過渡

關於代碼轉換:從TensorFlow1.0到2.0過渡我們使用 pip 安裝 TensorFlow 2.0 時,系統會自動添加 tf_upgrade_v2(項目地址) ,它可將現有的 TensorFlow Python 代碼轉換爲 TensorFlow 2.0 代碼。

#使用方法:
!tf_upgrade_v2

# 選擇 input file,輸出 output file
tf_upgrade_v2 --infile foo.py --outfile foo-upgraded.py

# 將整個目錄進行變換
tf_upgrade_v2 --intree coolcode --outtree coolcode-upgraded

兼容方面

爲確保TensorFlow 2.0仍支持您的代碼,升級腳本包含一個compat.v1模塊。該模塊替換TF
1.x符號tf.foo,與等效tf.compat.v1.foo參考一樣。雖然兼容性模塊很好,但我們建議您手動校對替換並將其遷移到tf.命名空間中的新API,而不是tf.compat.v1.

由於TensorFlow
2.x模塊已棄用(例如,tf.flags和tf.contrib),因此切換到compat.v1某些無法解決更改。升級此代碼可能需要使用其他庫(例如absl.flags)或切換到tensorflow
/ addons中的包。

  以上來源於官網

小結

TensorFlow 2.0將原有的一個非常強大非常成熟的深度學習庫進行了簡化,重點是以keras爲主,不知大家是否瞭解keras,根據官方標語,它是“爲人類設計,不是爲機器設計的API”。因此他在入門方面將大大優化, 如果你有以下需求,那麼TensorFlow是一個很好的選擇:

  • 開發需要部署在移動平臺上的模型
  • 想要各種形式的豐富的學習資源(TensorFlow開發課程比較多)
  • 想要或需要使用Tensorboard
  • 需要大規模的分佈式模型訓練

PyTorch仍然是一個年輕的框架,但其發展速度越來越快。如果你有以下需求,它可能會比較適合你:

  • 小規模項目的快速原型開發
  • 用於研究

參考文獻

https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md
https://tensorflow.google.cn/
https://www.youtube.com/watch?v=WTNH0tcscqo&t=304s

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章