iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 1
1

大家好,我是Dan,目前就職於電信業並在公司負責資料科學及機器學習相關專案的執行。在因緣際會下接觸了DL以及 TF已經大概有四年多,而這次TF的大升版,萌生了想要review自己的學習結果,以及針對未來的TF 2.0學習及比較。因次,在這次的30天內,我會盡量完全使用TF 2.0、Tensorflow相關的套件 (Ex: TF-Agent) 輔以 Python ML相關套件來完成這次的鐵人賽。環境使用上,主要會使用Colab來做示範,若遇到一些問題,或者資料量太大,可能就會使用自己的環境或者架GCP來跑。

什麼是Tensorflow

Tensorflow最初為Google Brian 所開發。在2015時,Google將之開源,為現今重要的深度學習框架之一,它支援各式不同的深度學習演算法,並已應用於各大企業服務上,Ex: Google, Youtube, Airbnb, Paypal ... 等。此外,Tensorflow也支援在各式不同的device上運行深度學習 Ex: Tensorflow Lite 、 Tensorflow.js 等等。Tensorflow為目前最受歡迎的機器學習、深度學習開源專案。不管是github fork的數量、論文的使用次數以及熱門程度,均比其他的框架來的多[註1]。因此,在AI時代下,Tensorflow是一個值得投資及好好學習的框架,尤其在這次大改版後,更是容易上手。這麼容易上手,害我們工作越沒有價值了:P

https://ithelp.ithome.com.tw/upload/images/20190916/20119971dCzBsv6rFk.png
圖: 論文引用次數及比較

Tensorflow 2.0跟過去有什麼差別

這次Tensorflow 2.0改了許多東西,讓Tensorflow更加易用以及更Pythonic了。接下來會提三點我認為最重要的改動(不只這些改動)。

  • Eager Excution:

    這是最重要且大家所認為很棒的改動,將Eager excution設為Default Mode。在Tensorflow Dev大會,當下全場觀眾可是針對這個改動而鼓掌。這個改動最主要的意義就是: 所見即所得。在過去TF 1.X的版本下,大部分TF程式必須先寫或者說定義好整個flow,會放到sess.run裡面去執行程式,才能得到結果。
    https://ithelp.ithome.com.tw/upload/images/20190916/20119971whqXJ5YBjE.png
    圖: TF 2.0與 TF 1.14比較

  • More Pythoic:

過去Tensorflow其實有被詬病認為在寫Tensorflow的程式的時候,感覺是在寫另外一種程式語言,和在寫Python有點差異,像是要跑for loop,可能就需要使用tf.while_loop。在eager execution下,想要使用python syntax且加快速度。就可以使用 tf.function decorator 。就會complile成graph速度也會較快在GPU或者TPU上(Dynamic graph to Static graph)。[註2]

@tf.function
def simple_nn_layer(x, y):
  return tf.nn.relu(tf.matmul(x, y))

https://ithelp.ithome.com.tw/upload/images/20190916/20119971QfNWMMrAdZ.png

  • tf.Keras:

    在tensorflow 2.0後,TF主要的高階API會直接支援Keras。而這樣的好處主要有

    1. 容易上手: 一般來說,DL 101都是從Keras玩起。因此,將Keras做為TF的高階API,不過是對初學者或者快速要做實驗性的Model都是很好的選擇
    2. 模組化: Keras在建立模型時,不管是任何layer,都可以輕鬆的抽換或者增加。有時候,就像在玩樂高呢XD

綜合上述幾點,Tensorflow 2.0的改動其實是讓人非常振奮。有些改動也歡迎大家在留言地方補充一起討論。因為仍在測試階段,也有許多雷,想是某些Performance或者function使用上會有些問題。因此,在這30天大家可以一起踩雷XD,使用看看TF 2.0。

簡易的安裝步驟

  1. Colab

針對大家要測試的環境,若使用Colab做簡單的TF2.0和TF1.X的語法做測試,非常之簡單,如下圖。
若要用TF 1.X直接Load Library即可。
https://ithelp.ithome.com.tw/upload/images/20190916/20119971U2KtEoKYeY.png

  1. 自己環境

一般來說,使用Python來做資料分析、機器學習等專案通常會安裝Anaconda。因此,我們可以直接用conda來建立虛擬環境來安裝TF2.0,比較不會影響到原本的套件。舉例來說可以如下:

$conda create -n tf2 python=3.6
$source activate tf2
$pip install tensorflow==2.0.0-beta1

接下來可以直接進去python check tf.__version__是不是'2.0.0-beta1'

在安裝後在import時我有遇到numpy版本的問題,在import時會有 numpy warning,解決方法就uninstall原本numpy版本,改安裝bumpy 1.16.4.的版本 (Source: Numpy issue )

小結:

Tensorflow這次的改版,針對開發的方便性更加提高,可以更快速的測試各式模型並部署。此外,Tensorflow community還有TensorHub (不是 XXXXhub )。在TensorHub裡面有一些pre-train好的Model,你可以拿來做一些Transfer learning 或者其他各式不同的learning嘗試。因此,Tensorflow真的是一個可以拿來運用於商業實務應用的深度學習框架
https://ithelp.ithome.com.tw/upload/images/20190916/20119971WzOdnF84aG.png

謝謝大家漫長閱讀,若對有什麼議題有興趣,歡迎大家提出來一起討論,感謝!除此之外,假如我有看到一些相關梗圖,也會貼出來讓大家在這30天,上班之餘輕鬆一下。
https://ithelp.ithome.com.tw/upload/images/20190916/20119971MrfC1NfYhD.png
圖片來源

Reference:

註1: Tensorflow與其他框架比較

註2: tf.function & Autograph

註3: Get start with TF 2.0 Colab

註4: install TF2-GPU

註5: TensorHub

註6: Tensorflow官方Youtube


下一篇
[Day-2] Tensorflow 基本語法 - Part I
系列文
Towards Tensorflow 2.030

尚未有邦友留言

立即登入留言