關于 TensorFlow
TensorFlow™ 是一個采用資料流圖(data flow graphs),用于數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間互相聯系的多元資料數組,即張量(tensor)。它靈活的架構讓你可以在多種平台上展開計算,例如台式計算機中的一個或多個CPU(或GPU),伺服器,移動裝置等等。TensorFlow 最初由Google大腦小組(隸屬于Google機器智能研究機構)的研究員和工程師們開發出來,用于機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可廣泛用于其他計算領域。
Tensorflow是谷歌公司在2015年9月開源的一個深度學習架構。
什麼是資料流圖(Data Flow Graph)?
資料流圖用“結點”(nodes)和“線”(edges)的有向圖來描述數學計算。“節點” 一般用來表示施加的數學操作,但也可以表示資料輸入(feed in)的起點/輸出(push out)的終點,或者是讀取/寫入持久變量(persistent variable)的終點。“線”表示“節點”之間的輸入/輸出關系。這些資料“線”可以輸運“size可動态調整”的多元資料數組,即“張量”(tensor)。張量從圖中流過的直覺圖像是這個工具取名為“Tensorflow”的原因。一旦輸入端的所有張量準備好,節點将被配置設定到各種計算裝置完成異步并行地執行運算。
TensorFlow的特征
高度的靈活性
TensorFlow 不是一個嚴格的“神經網絡”庫。隻要你可以将你的計算表示為一個資料流圖,你就可以使用Tensorflow。你來建構圖,描寫驅動計算的内部循環。我們提供了有用的工具來幫助你組裝“子圖”(常用于神經網絡),當然使用者也可以自己在Tensorflow基礎上寫自己的“上層庫”。定義順手好用的新複合操作和寫一個python函數一樣容易,而且也不用擔心性能損耗。當然萬一你發現找不到想要的底層資料操作,你也可以自己寫一點c++代碼來豐富底層的操作。
真正的可移植性(Portability)
Tensorflow 在CPU和GPU上運作,比如說可以運作在桌上型電腦、伺服器、手機移動裝置等等。想要在沒有特殊硬體的前提下,在你的筆記本上跑一下機器學習的新想法?Tensorflow可以辦到這點。準備将你的訓練模型在多個CPU上規模化運算,又不想修改代碼?Tensorflow可以辦到這點。想要将你的訓練好的模型作為産品的一部分用到手機app裡?Tensorflow可以辦到這點。你改變主意了,想要将你的模型作為雲端服務運作在自己的伺服器上,或者運作在Docker容器裡?Tensorfow也能辦到。Tensorflow就是這麼拽 ????
将科研和産品聯系在一起
過去如果要将科研中的機器學習想法用到産品中,需要大量的代碼重寫工作。那樣的日子一去不複返了!在Google,科學家用Tensorflow嘗試新的算法,産品團隊則用Tensorflow來訓練和使用計算模型,并直接提供給線上使用者。使用Tensorflow可以讓應用型研究者将想法迅速運用到産品中,也可以讓學術性研究者更直接地彼此分享代碼,進而提高科研産出率。
自動求微分
基于梯度的機器學習算法會受益于Tensorflow自動求微分的能力。作為Tensorflow使用者,你隻需要定義預測模型的結構,将這個結構和目标函數(objective function)結合在一起,并添加資料,Tensorflow将自動為你計算相關的微分導數。計算某個變量相對于其他變量的導數僅僅是通過擴充你的圖來完成的,是以你能一直清楚看到究竟在發生什麼。
多語言支援
Tensorflow 有一個合理的c++使用界面,也有一個易用的python使用界面來建構和執行你的graphs。你可以直接寫python/c++程式,也可以用互動式的ipython界面來用Tensorflow嘗試些想法,它可以幫你将筆記、代碼、可視化等有條理地歸置好。當然這僅僅是個起點——我們希望能鼓勵你創造自己最喜歡的語言界面,比如Go,Java,Lua,Javascript,或者是R。
性能最優化
比如說你又一個32個CPU核心、4個GPU顯示卡的工作站,想要将你工作站的計算潛能全發揮出來?由于Tensorflow 給予了線程、隊列、異步操作等以最佳的支援,Tensorflow 讓你可以将你手邊硬體的計算潛能全部發揮出來。你可以自由地将Tensorflow圖中的計算元素配置設定到不同裝置上,Tensorflow可以幫你管理好這些不同副本。
誰可以用 TensorFlow?
任何人都可以用Tensorflow。學生、研究員、愛好者、極客、工程師、開發者、發明家、創業者等等都可以在Apache 2.0 開源協定下使用Tensorflow。
Tensorflow 還沒竣工,它需要被進一步擴充和上層建構。我們剛釋出了源代碼的最初版本,并且将持續完善它。我們希望大家通過直接向源代碼貢獻,或者提供回報,來建立一個活躍的開源社群,以推動這個代碼庫的未來發展。
為啥Google要開源這個神器?
如果Tensorflow這麼好,為啥不藏起來而是要開源呢?答案或許比你想象的簡單:我們認為機器學習是未來新産品和新技術的一個關鍵部分。在這一個領域的研究是全球性的,并且發展很快,卻缺少一個标準化的工具。通過分享這個我們認為是世界上最好的機器學習工具庫之一的東東,我們希望能夠創造一個開放的标準,來促進交流研究想法和将機器學習算法産品化。Google的工程師們确實在用它來提供使用者直接在用的産品和服務,而Google的研究團隊也将在他們的許多科研文章中分享他們對Tensorflow的使用。