當前位置:
首頁 > 最新 > TensorFlow評述:最佳深度學習庫,且仍在不斷演進

TensorFlow評述:最佳深度學習庫,且仍在不斷演進

梗概

今天的評測,將集中討論截至2018年1月的TensorFlow發展現狀,同時展示去年其新增的各項重要功能。

如果大家去年關注過TensorFlow深度學習框架,就會發現其上手難度很高且成熟度有限。但如今,這套由谷歌打造的方案已經徹底改頭換面。

自從2016年10月評測TensorFlow r0.10版本以來,谷歌的這套開源深度學習框架已經變得更為成熟,實現了更多演算法與部署選項,且編程難度也大大降低。TensorFlow如今已經迎來r1.4.1版本(穩定版本與Web說明文檔)、r1.5版本(候選發行版)以及預發布r1.6版本(主分支與每日構建版本)。

TensorFlow項目可謂極具活力。粗略計算來看,GitHub上的TensorFlow庫目前擁有2.7萬項提交,8.5萬顆星評以及4.2萬個fork。這些數字令人印象深刻,且直觀反映出人們對於TensorFlow項目的高度關注——甚至超越了Node.js庫的人氣。

相比之下,由Amazon公司支持的另一套競爭性框架MXNet則活躍度相對較低:提交量不足7000條,星廉政約為1.3萬顆,fork則不足5000。2017年2月TensorFlow r1.0版本發布時的另一項統計數據顯示,TensorFlow目前在超過6000個在線開源代碼庫當中得到使用。

在今天的評測當中,我將集中討論截至2018年1月的TensorFlow發展現狀,同時展示去年其新增的各項重要功能。

TensorFlow功能

TensorFlow能夠實現手寫數字分類、圖像識別、單詞嵌入、遞歸神經網路、序列到序列機器翻譯模型、自然語言處理以及基於PDE(即偏微分方程)模擬。

另外,其還支持CPU與英偉達GPU。sequence-to-sequence項目可運行在Ubuntu Linux、MacOS、Android、iOS以及Windows(運行效果遠超以往)之上。其亦可支持配合訓練當中所使用的模型實現規模化生產性預測,且靈活性更高。再有,其仍然保留了自動微分功能、在TensorBoard中提供一款模型可視化工具,並為Python語言提供最佳支持效果(抱歉了,R與Scala程序員們)。

自r0.10版本以來,TensorFlow陸續發布了眾多改進、增強以及額外功能,同時亦修復了各種bug。下面我將選擇其中一些重點問題作出說明——舉例來說,各版本升級了對CUDA及cuDNN庫的支持,並採用最新英偉達GPU優化代碼以提升性能。

另外,其還實現了DHFS(Hadoop文件系統)支持能力,Windows實現效果提升,並迎來新的求解器與更好的Go支持性。經過幾個月的期待,TensorFlow圖形性能改進方案XLA(一款專用編譯器)與一款TensorFlow調試器得以發布。與此同時,TensorFlow項目還獲得了與PyPl以及pip等標準Python基礎架構的更佳對接能力,亦能夠契合在科學計算領域得到廣泛使用的NumPy工具包。

我們還看到RNN(常用於自然語言處理類遞歸神經網路)支持能力以及新的英特爾MKL(數學內核庫)集成能力,這顯著提升了CPU在深度學習領域的性能表現。在編程易用性方面,內置估算器(預定義模型層)被添加至為當中,其中包括多款回歸器與分類器。

TensorFlow中新增的多套庫可用於統計分布、信號處理基元以及圖像的可微分重新採樣。作為TensorFlow的一套特定實現方案,Keras(提供專門的高級神經網路API,亦可運行在MXNet、Deeplearning4j、微軟Cognitive Tooltit以及Teano之上)被開發出來。

社區開發進程顯示,其目前已經能夠提供出色的實效——多個相關貢獻模塊已被納入內核庫,另有一套伺服器庫可實現生產部署優化。

TensorFlow項目迎來一套訓練數據集庫,且可實現向下兼容;這一切對用於開發標準訓練數據集的新模型而言非常重要。此外,Java支持能力已經實現並得到多次強化。

最後,在TensorFlow r 1.5當中,急切執行(一個實驗性介面,可令TensorFlow實現對NumPy等命令式編程風格的支持)與TensorFlow Lite(面向移動與嵌入式設備實現預測能力)的預覽版本正式到來。

TensorFlow安裝

總的來說,TensorFlow的安裝方式已經得到了明顯改善。與以往一樣,TensorFlow仍然提供多種安裝方法,包括使用Python虛擬環境、「原生」pip、Docker以從來源處構建。

TensorFlow團隊建議使用虛擬環境進行安裝; 我個人則選擇使用「原生」pip,因為我之前將其安裝在自己的MacBook Pro上,我可不希望在磁碟空間不足以處理麻煩的卸載工作。

IDG

為Mac安裝一套TensorFlow每晚構建版本,這是一種相對較新的安裝選項,且運行效果良好。在安裝/升級之後,我以交互方式對其標準TensorFlow功能進行了測試。

除了各發行版本的二進位文件外,TensorFlow團隊現在還為Linux、Mac以及Windows提供每晚構建主分支的二進位代碼。使用以下命令即可輕鬆在Mac上進行每晚安裝:

sudo pip install tf-nightly

儘管目前的master分支文檔聲稱,這三個平台的CPU與GPU庫版本皆擁有每晚構建資源,但我無法使用Mac-pip找到並安裝Mac平台的GPU版本。

根據我的經驗,Mac GPU版本應該會嘗試進行安裝,但始終無法成功; 直到r 1.2版本時,Mac GPU版本被正式放棄。

我不太確定r1.6版本是否有計劃恢復Mac GPU版本,或者說TensorFlow團隊發布的每晚構建說明文檔中存在錯誤。無論如何,在不改變當前安裝條件的前提下,目前的GPU版本快速安裝效果確實比以往更好。

儘管如此,MacBook Pro顯然並不是利用TensorFlow進行深度學習模型訓練的理想設備。您可以使用包含一個或者多個新型高端英偉達GPU的Linux設備達成更出色的效果。

此外,您也可以花個幾千美元組裝出自己的深度學習專用PC。如果您只是偶爾需要進行模型訓練,則可在AWS、Azure、Google Compute Engine或者IBM Cloud上輕鬆利用配備GPU的實例運行TensorFlow。

使用TensorFlow

一年之前,TensorFlow項目主要存在兩個問題——難於學習,而且代碼編寫量太大。如今,這兩個問題都已經得到了解決。

為了簡化TensorFlow的學習門檻,TensorFlow團隊製作出更多學習資料,同時改進了現有入門教程。

另外,亦有一些第三方推出自己的TensorFlow教程。此外,目前已經付梓出版的TensorFlow書籍亦所在多有,外加一系列大線TensorFlow課程。

大家甚至可以關注斯坦福大學的TensorFlow for Deep Learning Research(CS 20)課程,其在線提供全部演示文稿與講義內容。

TensorFlow庫中的幾個新增部分還開始提供編碼要求更低的模型創建與訓練介面。其中包括tf.kera,其提供引擎中立Keras工具包的一套純TensorFlow版本,外加負責提供多種高級模型處理功能的tf.estimator——可用於線性的回歸器與分類器、深層神經網路(簡稱DNN)、線性與DNN結合,外加一個可用於建立自有估算器的基類。

此外,Dataset API允許用戶立足簡單且可復用的片段構建複雜的輸入管道——意味著大家不再需要被迫選擇其一。正如TensorFlow-Keras教程中所言,您可以輕鬆將tf.keras、tf.data.dataset以及tf.estimator配合使用。

TensorFlow Lite

TensorFlow Lite目前正處於開發者預覽階段,屬於TensorFlow的一套輕量化版本,能夠運行在移動與嵌入式設備當中,從而以低延遲與低資源需求實現設備上的機器學習推理(但無法進行訓練)。

TensorFlow Lite還支持Android Neural Networks API的硬體加速機制。TensorFlow Lite模型非常小巧,足以運行在移動設備之上,甚至可以支持離線用例。

IDG

TensorFlow Lite允許小巧的神經網路模型運行在Android與iOS設備之上,甚至能夠實現離線執行。該庫目前仍處於開發者預覽階段,且不保證向上或向下兼容性。

TensorFlow Lite的基本思路在於,當用戶訓練出一套完整的TensorFlow模型,並將其轉換為TensorFlow Lite格式之後,即可在Android或iOS上的移動應用當中使用轉換得到的文件。

當然,大家也可以利用經過預告訓練的TensorFlow Lite模型實現圖像分類或智能答覆。智能答覆會利用上下文信息提供高相關性消息,其在本質上與谷歌在Gmail客戶端當中提供的回復預測功能完全一致。

另一個使用方式選項則是利用新的標記數據集對現有模型進行重新訓練,這將顯著降低訓練時間。

TensorFlow Serving

TensorFlow Serving 是一套靈活且性能出色的服務系統,專門面向機器學習模型且適用於生產環境。其不僅能夠提供單一模型,您亦可配同時使用servables的多個版本,且客戶端將直接使用最新版本或者根據特定版本ID調用特定模型——這將顯著簡化您嘗試新型演算法的實驗過程。

您也可以將複合模型表示為多個獨立servables或單一複合servables。對servables的訪問由sources控制,而sources能夠從任意存儲系統當中發現servables。

TensorFlow Eager

急切執行為TensorFlow 推出的一個實驗性介面,提供類似於NumPy的命令式編程風格。當您啟用急切執行功能時,TensorFlow 操作將立即得到執行——意味著您無需使用Session.run()來執行預先構建的圖形。

這種辦法能夠有效簡化TensorFlow矩陣運算與模型代碼,不過其目前尚不提供具備向上與向下兼容性保證的預覽/前置版本。相較於運行會話,急切執行也將有效簡化TensorFlow代碼的調試流程。

急切執行兼容NumPy數組、GPU加速、自動微分以及在tf.layers模塊中使用的Keras風格Layer類。您可以發布摘要並在TensorBoard中使用,但需要使用summary類的一套全新分散式版本。

急切執行說明文檔中警告稱,「在分散式與多GPU訓練以及CPU性能方面,我們仍在積極工作以實現支持。」

TensorFlow與其它競爭對手

總體而言,TensorFlow始終處於機器學習與深度學習框架的前沿。正如之前所提到,過去一年以來,TensorFlow已經在性能、部署、易學易用性、編程簡易性以及對常見Python庫及實用程序的兼容性等方面迎來巨大提升。

不過就在同一時段之內,其它作為競爭對手的深度學習框架也在不斷改進。MXNet已經被納入Apache基金會麾下,且在功能與性能方面實現改進。微軟Cognitive Toolkit亦在多方面取得進展,包括實現對Keras以及TensorBoard的支持能力。Facebook公司的Caffe2是對Caffe的一次重要改寫,其在圖像處理卷積網路當中增加了遞歸與LSTM(長短期記憶)網路支持。

開源H2O.ai預測引擎憑藉著優秀的專有超參數調整與功能工程層得到強化,並迎來了資源消耗極高但卻物有所值的特徵工程層Drverless AI。Scikit-learn繼續在其專長的機器學習(而非深度學習)領域順利發展。對於已經在使用Spark且不需要訓練深層神經網路的用戶而言,Spark MLlib也是個很好的選擇。

只要您擁有TensorFlow編程所必需的技能儲備,那麼TensorFlow絕對是您進行深度學習模型構建、訓練以及生產的絕佳選擇。

使用成本: 基於Apache Licesne 2.0版本的自由開源項目。

適用平台: 推薦使用Ubuntu 14.04+、MacOS 10.11+、Windows 7+、英偉達GPU與CUDA。大多數雲方案現在支持TensorFlow與英偉達GPU配合使用。TensorFlow Lite可立足Android與iOS設備運行預訓練模型。

項目總覽

谷歌公司的這套深度學習開源框架已經愈發成熟、可實現更多演算法與部署選項,且編程難度亦有所下降。

既然Facebook、谷歌、雅虎、蘋果以及微軟等巨頭級企業都在利用這些庫支持自己的深度學習與機器學習項目,您當然也沒有理由拒絕,不是嗎?

當然,相信大家也有著一些自己經常使用、但卻未被列入本次榜單的庫選項——請在評論中分享您的心得!

優勢

缺點

譯者:核子可樂

編輯:WXY

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

戳進來,手把手教你挑選最適合的粉底!

TAG:全球大搜羅 |