iT邦幫忙

0

TensorFlow 2.0 的重大更新功能

前言

TensorFlow 在去年就不斷的promote v2.0 版,到底它改善的方向有那些呢? 正式版何時release? 整理一些馬路新聞與大家分享。

市占率

近來 TensorFlow 面臨 Facebook PyTorch 的強力挑戰,PyTorch 的市占率不斷攀升,依『Deep Learning Framework Power Scores 2018』分析,從工作需求來看,PyTorch 市占率還是有一段差距(圖一),但是,從專業期刊(ArXiv)論文引用率(圖二),已經產生一些威脅了。
https://ithelp.ithome.com.tw/upload/images/20190723/20001976miazDEQsz0.png
圖一. 工作需求比例,圖片來源:Deep Learning Framework Power Scores 2018

https://ithelp.ithome.com.tw/upload/images/20190723/200019769ejwaGuzrC.png
圖二. ArXiv 論文引用率,圖片來源:Deep Learning Framework Power Scores 2018

現況比較

PyTorch 攻擊 TensorFlow 論點是『TensorFlow 把簡單的問題複雜化,而 Keras 把複雜的問題太過簡單化』,最明顯的例子就是要建立一個『a+b』的運算圖,TensorFlow 程式如下:

import tensorflow as tf
import numpy as np
# Defining some constant values
a = tf.constant(5.0, name="a")
b = tf.constant(10.0, name="b")

# Some basic operations
x = tf.add(a, b, name="add")
with tf.Session() as sess:
    print("x: ", sess.run(x))

# Closing the writer.
writer.close()
sess.close()

計算個a+b要寫十幾行,雖然,採取靜態運算圖(static computational graph)效能較好,但是,程式複雜,而且除錯困難,只有在sess.run() 後才能追蹤(trace)偵錯,反之,PyTorch 可以直接在模型中使用 Python 語法建立動態模型,相較之下簡單多了。

重大更新

因此,TensorFlow 2.0 作了重大的變革,連標題『TensorFlow已死,TensorFlow 2.0長存』(TensorFlow is dead, long live TensorFlow!)的文章也出來了,除了強調『建模簡單化』,也延長戰線,加強整個開發/佈署過程的全面支援,包括分散式的處理。

在『建模簡單化』主要有兩方面:

  1. Eager execution:不需要建立 session,可直接使用 Python 語法建立模型,TensorFlow 會直接將IF等語法轉為運算圖,也可以在過程中除錯。
  2. 依據 Keras 規格,改寫 Keras 套件功能,直接納入 TensorFlow 家族,它與獨立Keras套件的比較,請參看『Standardizing on Keras: Guidance on High-level APIs in TensorFlow 2.0』,主要強調Keras可與其他API整合(混用)及納入Eager execution功能。

使用 Eager execution 實踐 a+b 的程式碼如下,跟寫一般Python沒甚麼差別:

import tensorflow as tf
import numpy as np
# 啟動 eager execution 模式
tf.enable_eager_execution()
a = tf.constant([[1, 2],
                 [3, 4]])
b = tf.add(a, 1)
print(a+b)                 

整個開發/佈署過程的全面支援的加強,包括:

  1. TensorFlow Serving 模組:可輕易的佈署在 HTTP 或 gRPC 協定上,提供線上服務。
  2. TensorFlow Lite 模組:加強邊緣運算的支援,可佈署在手機、Raspberry Pi、Edge TPU 等。
  3. TensorFlow.js 模組:提供 Node.js/JavaScript 開發,包括使用類似Keras的API。

上市時程

依據 TensorFlow 官網 v2.0 應該在 2019 Q2 發佈,顯然時程落後了,到目前為止還是 Beta 版,可參考『這裡』,其實,很多功能在目前的版本v1.3已經提供了, 只是在 v2.0 可能會更清楚吧。

結語

TensorFlow 的家族龐大,提供高低階的API,而且,模組替換很快,有些模組未來就不支援了,在學習時要注意,不要在行將就木的功能上鑽研,以免白忙一場。

最後作一點工商廣告,有興趣學TensorFlow的同好,可參考『這裡』。


尚未有邦友留言

立即登入留言