揭開TensorFlow的小祕密,機器學習輕鬆行!

TensorFlow是一個用於數值計算的Python友好的開源庫,可以讓機器學習變得更快更輕鬆 。

揭開TensorFlow的小秘密,機器學習輕鬆行!

機器學習是一門複雜的學科。但是,由於機器學習框架(如Google的TensorFlow),實現機器學習模型的過程變得遠沒有以前那麼艱鉅和困難了,因為它簡化了數據採集、訓練模型、服務預測和提煉未來結果的過程。

由Google Brain團隊創建,TensorFlow是一個用於數值計算和大規模機器學習的開源庫。TensorFlow將一系列機器學習和深度學習(又名神經網絡)模型和算法捆綁在一起,並通過一個共同的比喻使它們變得有用。它使用Python為構建帶有框架的應用程序提供了一個方便的前端API,同時以高性能C++來執行這些應用程序。

TensorFlow可以訓練和運行手寫數字分類、圖像識別、詞嵌入、遞歸神經網絡、機器翻譯的序列、序列模型、自然語言處理和基於PDE(偏微分方程)的模擬的深度神經網絡。最重要的是,TensorFlow支持大規模的生產預測,並使用與訓練相同的模型。

TensorFlow如何工作

TensorFlow允許開發人員創建數據流圖,描述數據如何通過圖形或一系列處理節點移動的結構。圖中的每個節點表示一個數學運算,並且節點之間的每個連接或邊都是多維數據陣列或張量。

TensorFlow通過Python語言為程序員提供了所有這些。 Python很容易學習和使用,並提供了便捷的方式來表達高級抽象如何耦​​合在一起。TensorFlow中的節點和張量是Python對象,而TensorFlow應用程序本身就是Python應用程序。

但是,實際的數學運算不是在Python中執行的。可通過TensorFlow獲得的轉換庫被編寫為高性能C++二進制文件。 Python只是指導片段之間的流量,並提供高級編程抽象來將它們連接在一起。

TensorFlow應用程序可以在大多數方便的目標上運行:本地機器、雲中的集群、iOS和Android設備、CPU或GPU。如果您使用Google自己的雲,您可以在Google的定製TensorFlow處理單元(TPU)芯片上運行TensorFlow以進一步加速。然而,由TensorFlow創建的最終模型可以部署在大多數將用於服務預測的設備上。

TensorFlow的好處

TensorFlow為機器學習開發提供的最大好處是抽象。與其處理實現算法的細節,或者找出將一個函數的輸出然後連接到另一個函數的輸出的正確方法,開發人員可以專注於應用程序的整體邏輯,TensorFlow則負責幕後的細節。

揭開TensorFlow的小秘密,機器學習輕鬆行!

TensorFlow為需要調試並獲得TensorFlow應用程序內省的開發人員提供了額外的便利。這種執行模式可讓您分別透明地評估和修改每個圖形操作,而不是將整個圖形構建為單個不透明對象,並一次對其進行評估。通過TensorBoard可視化套件,您可以通過交互式的基於Web的儀表板檢查和分析圖形的運行方式。

當然,TensorFlow在Google的A級商業機構的支持下獲得了許多優勢。 Google不僅推動了項目背後的快速發展,而且還創造了許多重要的TensorFlow產品,這些產品更易於部署並更易於使用:上述TPU芯片可提高Google雲性能;一個與該框架共享模型的在線中心;瀏覽器和移動友好的框架化身以及更多。

需要注意的是:TensorFlow實施的一些細節使得很難為某些訓練工作獲得完全確定性的模型訓練結果。有時,訓練在一個系統上的模型與訓練另一個系統的模型會有所不同,即使它們被輸入完全相同的數據。

TensorFlow與競爭對手

TensorFlow與其他一些機器學習框架競爭。PyTorch、CNTK和MXNet是解決許多相同需求的三個主要框架。下面我已經注意到他們脫穎而出的地方,並對TensorFlow做了簡短的介紹。

揭開TensorFlow的小秘密,機器學習輕鬆行!

PyTorch除了使用Python構建之外,還與TensorFlow有許多其他相似之處:引擎蓋下的硬件加速組件,高度交互式的開發模型,可以隨時隨地進行設計,並且已包含許多有用的組件。對於需要在短時間內啟動並運行的項目的快速開發,PyTorch通常是更好的選擇,但TensorFlow可勝任大型項目和更復雜的工作流程。

微軟認知工具包CNTK像TensorFlow一樣使用圖形結構來描述數據流,但最需呀關注的是創建深度學習神經網絡。CNTK可以更快地處理許多神經網絡工作,並且擁有更廣泛的API(Python,C ++,C#,Java)。但是CNTK目前並不像TensorFlow那樣容易學習或部署。

亞馬遜作為AWS首選的深度學習框架,採用的Apache MXNet可以跨多個GPU和多臺機器幾乎線性擴展。它還支持各種各樣的語言API(Python,C ++,Scala,R,JavaScript,Julia,Perl,Go)。


分享到:


相關文章: