本頁使用了標題或全文手工轉換

TensorFlow

維基百科,自由的百科全書
跳至導覽 跳至搜尋
TensorFlow
TensorFlowLogo.svg
開發者 Google大腦團隊[1]
初始版本 2015年11月9日,​3年前​(2015-11-09
穩定版本
1.9.0[2]
(2018年7月10日,​11個月前​(2018-07-10
原始碼庫 編輯維基數據連結
程式語言 PythonC++CUDA
系統平台 LinuxmacOSWindowsAndroid
類型 機器學習
許可協定 Apache 2.0開源許可證
網站 www.tensorflow.org

TensorFlow是一個開源軟件庫,用於各種感知和語言理解任務的機器學習[3]目前被50個團隊[3]:min 0:15/2:17用於研究和生產許多Google商業產品[4]:p.2,如語音辨識GmailGoogle 相簿和搜尋[3]:0:26/2:17,其中許多產品曾使用過其前任軟件DistBelief。

TensorFlow最初由Google大腦團隊開發,用於Google的研究和生產,於2015年11月9日在Apache 2.0開源許可證下發佈。[1][5]

歷史[編輯]

DistBelief[編輯]

從2010年開始,Google大腦建立DistBelief作為他們的第一代專有機器學習系統。50多個團隊在Google和其他Alphabet公司在商業產品部署了DistBelief的深度學習神經網絡,包括Google搜尋Google語音搜尋、廣告、Google 相簿Google地圖Google街景Google翻譯YouTube[4][6]Google指派電腦科學家,如Geoffrey Hinton和Jeff Dean,簡化和重構DistBelief的程式碼庫,使其變成一個更快、更健壯的應用級別程式碼庫,形成了TensorFlow。[7]2009年,Hinton領導的研究小組大大減少使用DistBelief的神經網絡的錯誤數量,通過Hinton在廣義反向傳播的科學突破。最值得注意的是,Hinton的突破直接使Google語音辨識軟件中的錯誤減少至少25%。[8]

TensorFlow[編輯]

TensorFlow是Google大腦的第二代機器學習系統。

從0.8.0版本(發佈於2016年4月)開始原生的支援分散式執行。

從0.9.0版本(發佈於2016年6月)開始支援iOS。

從0.12.0版本(發佈於2016年12月)開始支援Windows系統。該移植程式碼主要由微軟貢獻。

1.0.0版本發佈於2017年2月11日。雖然參考實現執行在單台裝置,TensorFlow可以執行在多個CPUGPU(和可選的CUDA擴充和圖形處理器通用計算SYCL擴充)。[9]TensorFlow可用於64位元LinuxmacOSWindows,以及移動計算平台,包括AndroidiOS

TensorFlow的計算使用有狀態的數據流圖表示。TensorFlow的名字來源於這類神經網絡對多維陣列執行的操作。這些多維陣列被稱為張量(Tensor)。2016年6月,Jeff Dean稱在GitHub有1500個庫提到了TensorFlow,其中只有5個來自Google。[10]

張量處理單元(TPU)[編輯]

2016年5月,Google宣佈了張量處理單元(TPU),一個專為機器學習和TensorFlow全客製化專用集成電路。TPU是一個可程式化的人工智能加速器,提供高吞吐量的低精度計算(如8位元),面向使用或執行模型而不是訓練模型。Google宣佈他們已經在數據中心中執行TPU長達一年多,發現它們對機器學習提供一個數量級更優的每瓦特效能。[11]

2017年5月Google宣佈第二代張量處理單元,並在Google Compute Engine英語Google Compute Engine中可用。[12]第二代TPU提供最高180 teraflops效能,組裝成64個TPU的叢集時提供最高11.5 petaflops效能。

TensorFlow Lite[編輯]

2017年5月Google宣佈從Android Oreo開始,提供一個專用於Android開發的軟件棧TensorFlow Lite[13]

應用[編輯]

Google於2015年10月26日正式發佈了RankBrain,由TensorFlow支援。

特性[編輯]

TensorFlow提供了一個Python API,以及C++HaskellJavaGoRust API。第三方包可用於 C#JuliaRScala

TensorFlow的底層核心引擎由C++實現,通過 gRPC 實現網絡互訪、分散式執行。雖然它的Python/C++/Java API共用了大部分執行程式碼,但是有關於反向傳播梯度計算的部分需要在不同語言單獨實現。目前只有Python API較為豐富的實現了反向傳播部分。所以大多數人使用Python進行模型訓練,但是可以選擇使用其它語言進行線上推理。

TensorFlow在Windows和Linux上支援使用 Bazel 或 CMake 構建,在某些平台上也支援直接使用 GNU Make 進行編譯。

例子[編輯]

例一:Hello World。

import tensorflow as tf
hw = tf.constant("Hello World")
with tf.Session() as sess:
 print(sess.run(hw))

例二:兩個矩陣相乘。

import tensorflow as tf

# Build a dataflow graph.
c = tf.constant([[1.0, 2.0], [3.0, 4.0]])
d = tf.constant([[1.0, 1.0], [0.0, 1.0]])
e = tf.matmul(c, d)

# Construct a `Session` to execute the graph.
with tf.Session() as sess:
  # Execute the graph and store the value that `e` represents in `result`.
  result = sess.run(e)

print(result)

例三:使用Feeding在執行時傳入參數

import tensorflow as tf

# Build a dataflow graph.
c = tf.constant([[1.0, 2.0], [3.0, 4.0]])
d = tf.constant([[1.0, 1.0], [0.0, 1.0]])
e = tf.matmul(c, d)

# Construct a `Session` to execute the graph.
sess = tf.Session()

# Execute the graph and store the value that `e` represents in `result`.
result = sess.run(e,feed_dict={c:[[0.0, 0.0], [3.0, 4.0]]})
print(result)
sess.close()

TensorFlow的一大特色時其圖中的節點可以是帶狀態的。

例四:帶狀態的圖

import tensorflow as tf

# Build a dataflow graph.
count = tf.Variable([0],trainable=False);
init_op = tf.global_variables_initializer()
update_count = count.assign_add(tf.constant([2]))

# Construct a `Session` to execute the graph.
sess = tf.Session()
sess.run(init_op)

for step in range(10):
    result = sess.run(update_count)
    print("step %d: count = %g" % (step,result))

sess.close()

例五:梯度計算

import tensorflow as tf

# Build a dataflow graph.
filename_queue = tf.train.string_input_producer(['1.txt'],num_epochs=1)
reader = tf.TextLineReader()
key,value = reader.read(filename_queue)
num = tf.decode_csv(value,record_defaults=[[0]])
x = tf.Variable([0])
loss = x * num
grads = tf.gradients([loss],x)
grad_x = grads[0]

def train_fn(sess):
  train_fn.counter += 1
  result = sess.run(grad_x)
  print("step %d: grad = %g" % (train_fn.counter,result))

train_fn.counter = 0

sv = tf.train.Supervisor()
tf.train.basic_train_loop(sv,train_fn)

假設1.txt的內容為:

3
2
5
8

那麼上述程式的輸出應該為:

step 1: grad = 3
step 2: grad = 2
step 3: grad = 5
step 4: grad = 8

應用[編輯]

廣泛的應用程式使用TensorFlow作為基礎,其中它已成功實現自動化圖像字幕軟件,例如DeepDream英語DeepDream[14]2015年10月26日,Google正式啟用了由TensorFlow提供支援的RankBrain。RankBrain現在處理大量的搜尋查詢,替換和補充傳統的靜態演算法搜尋結果。[15]

參閱[編輯]

參照[編輯]

  1. ^ 1.0 1.1 Credits. [2015-11-10]. (原始內容存檔於2015-11-17). 
  2. ^ TensorFlow Release. [2018-07-10]. (原始內容存檔於2018-07-11) (美國英語). 
  3. ^ 3.0 3.1 3.2 "TensorFlow: Open source machine learning" 頁面存檔備份,存於互聯網檔案館 "It is machine learning software being used for various kinds of perceptual and language understanding tasks" — Jeffrey Dean, minute 0:47 / 2:17 from Youtube clip
  4. ^ 4.0 4.1 TensorFlow: Large-scale machine learning on heterogeneous systems (PDF). Google Research. 2015-11-09 [2015-11-10]. (原始內容存檔 (PDF)於2015-11-20). 
  5. ^ Google Just Open Sourced TensorFlow, Its Artificial Intelligence Engine. 2015-11-09 [2015-11-10]. (原始內容存檔於2015-11-10). 
  6. ^ Google Open-Sources The Machine Learning Tech Behind Google Photos Search, Smart Reply And More. 2015-11-09 [2015-11-11]. (原始內容存檔於2015-11-10). 
  7. ^ What Is TensorFlow, and Why Is Google So Excited About It?. 2015-11-11 [2015-11-11]. (原始內容存檔於2015-11-10). 
  8. ^ Google chairman: We’re making 'real progress' on artificial intelligence. 2015-11-25 [2015-11-25]. (原始內容存檔於2015-11-25). 
  9. ^ Metz, Cade. TensorFlow, Google's Open Source AI , Points to a Fast-Changing Hardware World. 2015-11-10 [2015-11-11]. (原始內容存檔於2015-11-11). 
  10. ^ Machine Learning: Google I/O 2016 Minute 07:30/44:44 頁面存檔備份,存於互聯網檔案館 accessdate=2016-06-05
  11. ^ Google supercharges machine learning tasks with TPU custom chip. [2016-05-19]. (原始內容存檔於2016-05-18). 
  12. ^ Build and train machine learning models on our new Google Cloud TPUs. Google. 2017-05-17 [2017-05-18]. (原始內容存檔於2017-05-17) (英語). 
  13. ^ Google’s new machine learning framework is going to put more AI on your phone. [2018-01-14]. (原始內容存檔於2017-08-22). 
  14. ^ Google Offers Up Its Entire Machine Learning Library as Open-Source Software. 2015-11-11 [2015-11-11]. (原始內容存檔於2015-11-23). 
  15. ^ Google releases TensorFlow – Search giant makes its artificial intelligence software available to the public. 2015-11-25 [2015-11-25]. (原始內容存檔於2015-11-25). 

外部連結[編輯]