當前位置:
首頁 > 最新 > TensorFlow過去這一年:最好用的深度學習框架,並且越來越好

TensorFlow過去這一年:最好用的深度學習框架,並且越來越好

作者|Martin Heller,InfoWorld 特約編輯

編譯|Debra

編輯|Emily

AI 前線導讀:TensorFlow 更新到 r1.5 版本後,這個 Google 的機器學習和神經網路開源庫功能變得更強、更成熟,也更容易學習和使用。

更多乾貨內容請關注微信公眾號「AI 前線」,(ID:ai-front)

也許去年你會認為 TensorFlow 是一個太難學或不成熟的深度學習框架,但現在可能不會這麼想了。

自我 2016 年 10 月回顧了 TensorFlow r0.10 版本以來,Google 的這個深度學習開源框架已經變得更加成熟,添加了更多的演算法和部署選項,而且更容易開發。目前,TensorFlow 已經更新到 r1.5,還有後續的預發布版本 r1.6(主分支和日常建模)。

TensorFlow 項目的活躍度一直相對較高。據粗略計算,目前 GitHub 上的 TensorFlow 代碼庫共有 2.7 萬次提交,被收藏 8.5 次,以及 4.2 萬個 forks。這些讓人印象深刻的數字反映其活躍度和對人們的吸引力,甚至超過了 Node.js 代碼庫。相比之下,得到亞馬遜大力支持的 MXNet 框架的活躍度低得多:約不到 7 千次提交,1.3 萬次收藏,以及不到 5 千個 forks。2017 年 2 月 TensorFlow r1.0 發布時的另一個統計數據顯示,人們在在線的 6000 多個開源代碼庫中使用了 TensorFlow。

在這篇回顧文章中,我將集中討論截至 2018 年 1 月,TensorFlow 的現狀以及相比去年增加了哪些重要的功能。

TensorFlow 功能

和去年一樣,TensorFlow 可以運行並訓練手寫數字分類、圖像識別、文字嵌入、遞歸神經網路、用於機器翻譯的序列——序列模型,自然語言處理和基於 PDE(偏微分方程)的深度神經網路。它仍然支持 CPU 和 Nvidia GPU,可以在 Ubuntu Linux、MacOS、Android、iOS 和 Windows 上運行,支持與用於訓練相同模型的大規模產品預測,只是會更加靈活。它仍然是自動分化的,在 TensorBoard 中仍然有一個模型可視化工具,(抱歉,R 和 Scala 程序員們)仍然使用 Python 語言提供最好的支持。

自 r0.10 版本以來,TensorFlow 的改進很大,增加了很多功能和附加功能,並修復了許多錯誤,所以我此次僅提及它的亮點。例如,各種版本升級了 CUDA 和 cuDNN 庫支持,通過採用最新的 Nvidia GPU 優化代碼提高了性能,並增加了性能更優的 windows HDFS(Hadoop 文件系統)支持,以及新的求解器和更好的 Go 支持。經過幾個月的預測,特定域的 TensorFlow 圖表編譯器 XLA 的性能提高,還發布了一款排錯程序。與此同時,有了 PyPI 和 pip 等標準的 Python 基礎結構,以及科學計算社區廣泛使用的 NumPy 軟體包,TensorFlow 得到更多優化。

RNN(經常用於自然語言處理的遞歸神經網路)支持有了較大的進步,新的英特爾 MKL(數學核心庫)集成也提高 CPU 深度學習性能方面的性能。在編程的易用性方面,TensorFlow 庫中添加了罐式估算器(預定義的模型層),包括若干回歸器和分類器。此外還增加了用於統計分布、信號處理基元和圖像可微分重採樣的庫,並為 TensorFlow 量身定製了 Keras(高級神經網路 API,其標準實現也可以在 MXNet、Deeplearning4j、Microsoft Cognitive Toolkit 和 Theano 上運行)。若干模塊被移入核心庫也顯示出其高效性,伺服器庫的生產部署也得到改進。

此外,TensorFlow 還添加了一個訓練數據集庫,並保證向後兼容性,而這對開發標準訓練數據集的新模型很有用。另外,它還添加了 Java 支持,並進行了多次改進。最後,在 TensorFlow r1.5 中發布了 eager execution (支持命令式編程風格的 TensorFlow 實驗性界面,如 NumPy)和 TensorFlow Lite(預測移動和嵌入式設備)預覽版。

TensorFlow 安裝

總的來說,TensorFlow 的安裝已經有了明顯的改善。和之前一樣,安裝 TensorFlow 的方法有多種,包括 Python 虛擬環境,「本地」pip、Docker 和源碼構建。

TensorFlow 團隊建議使用 virtualenv 進行安裝,但我使用的是「原生」pip。

除了編號發布版本的二進位文件外,TensorFlow 團隊現在還為 Linux、Mac 和 Windows 提供主分支 Python 隔夜版本二進位文件。調用以下命令可以輕鬆安裝隔夜版本 Mac CPU wheel(參見上圖):

sudo pip 安裝 tf 隔夜版本

儘管目前的 master 分支文檔聲稱,三個平台的 CPU 和 GPU 版本都有隔夜版本,但我無法為 Mac 安裝 GPU 版本,因為 Pip 找不到它。根據我以往的經驗,Mac GPU 版本雖然能安裝成功,但並不能使用,直到 r1.2 發布,Mac GPU 版本被刪除。我不確定在 r1.6 版本中恢復 Mac GPU 的計劃是否屬實,或者隔夜構建文檔是否有誤。無論如何,在不改寫當前安裝的情況下快速安裝 GPU 總比之前有了進步。

儘管如此,MacBook Pro 並不是經常使用 TensorFlow 訓練深度學習模型的理想機器。在一台含有一個或多個新的高端 Nvidia GPU 的 Linux 機器上來做這件事效果會好得多,或者花上幾千美元為自己購買一台專用於訓練的 PC。如果您只是偶爾進行訓練,那麼 AWS、Azure、Google Compute Engine 或 IBM Cloud 的 GPU 都可以輕鬆地運行 TensorFlow。

使用 TensorFlow

一年前,TensorFlow 最大的兩個問題,一是太難學,二是編寫代碼太多。現在,這兩個問題都已經得到解決。

為了使 TensorFlow 更易學,TensorFlow 團隊製作了更多的學習資料,並改進了現有的入門教程。另外還有一些第三方也製作了自己的 TensorFlow 教程,而且有很多印刷版 TensorFlow 書籍和在線 TensorFlow 課程。您甚至可以在線學習斯坦福大學的 TensorFlow 深度學習研究(CS20)課程,課程的所有的幻燈片和講義都可以在網上找到。

TensorFlow Lite

TensorFlow Lite 目前還處於開發者預覽版的階段,是針對移動和嵌入式設備的輕量級解決方案,這個版本可以讓你在設備上進行機器學習推理(但不是訓練),並具有低延遲性和二進位計算量少的特點。TensorFlow Lite 還支持 Android 神經網路 API 的硬體加速。

TensorFlow Lite 的基本思想是訓練一個完整的 TensorFlow 模型,並將其轉換為 TensorFlow Lite 模型格式。然後,您可以在 Android 或 iOS 上的移動應用程序中使用轉換後的文件。

或者,您可以使用一個預先訓練的 TensorFlow Lite 模型進行圖像分類或智能答覆。智能回復是根據上下文信息,從選項中進行選擇做出回應,實質上與 Google Gmail 客戶端中的回復預測功能相似。

另一個方法是用新的標記數據集重新訓練現有的模型,這種技術可以顯著減少訓練時間。此教程被稱為 TensorFlow for Poets。

TensorFlow Serving

TensorFlow Serving 是一個可以適應各種生產環境的高度靈活、高性能的機器學習模型服務系統。它不僅可以用於單一的模型,用戶可以使用多個版本的多個伺服器,也可以請求使用特定模型的最新版本或特定版本 ID,這樣就可以輕鬆地嘗試各種新的演算法和實驗。

您可以將複合模型表示為多個獨立伺服器或單個組合伺服器。源(sources)控制伺服器的訪問權,可以從任意存儲系統發現伺服器。

Eager Execution

Eager Execution 是 TensorFlow 的一個實驗性的介面,風格類似於 NumPy 的命令式編程。當您啟用 Eager execution 時,TensorFlow 將立即啟動操作。如此,您就不必用 Session.run()執行一個預先構建的圖。

雖然只是沒有前向兼容性保證的預覽 / 前置(pre-alpha)版本,它不失為簡化 TensorFlow 矩陣操作和模型代碼的另一個有用的方法。Eager Execution 也使得調試 TensorFlow 代碼比運行會話更容易。

Eager Execution 與 NumPy 數組、GPU 加速、自動分化以及在 tf.layers 模塊中使用 Keras 樣式的圖層類兼容。您可以發布用於 TensorBoard 的摘要,但是需要使用摘要類的新版本,而且 Eager Execution 會發出警告:「流暢的分散式和多 GPU 訓練與 CPU 性能體驗還有待完善」。

TensoTensorFlow 與競爭對手

總體而言,TensorFlow 始終處於機器學習和深度學習框架的前沿。

然而,雖然 TensorFlow 在不斷完善,深度學習框架競品也在不斷進步。性能良好且已經得到擴展,併入 Apache 基金會麾下的 MXNet,在功能和性能方面也在不斷改進。Microsoft Cognitive Toolkit 也在許多方面取得了長足進展,包括支持 Keras 和(gasp!)TensorBoard。 Facebook 的 Caffe2 是 Caffe 的一個重要的改寫版本,在圖像處理卷積網路中增加了遞歸和 LSTM(長短期記憶)網路。

開源的 H2O.ai 預測引擎通過增加一個專有超參數調整和功能工程層 Driverless AI而性能得以提升,雖然意義重大,但價格昂貴。Scikit Learn 仍然很好用,它支持 ML 但不支持深度神經網路。對於那些已經使用 Spark 並且不需要訓練深度神經網路的人來說,Spark MLlib 是一個很好的選擇。

費用:Apache License 2.0 認證的免費開放源代碼。

平台:推薦使用 Ubuntu 14.04+,MacOS 10.11+,Windows 7+; Nvidia GPU 和 CUDA。目前,大多數雲服務支持在 Nvidia GPU 上運行的 TensorFlow。另外,TensorFlow Lite 能夠在 Android 和 iOS 上運行經過訓練的模型。

優點

缺點

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

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


請您繼續閱讀更多來自 AI漫遊 的精彩文章:

阿里虧損才賣出百萬,亞馬遜爸爸怎麼做到輕鬆賣出千萬智能音箱的?

TAG:AI漫遊 |