深入機器學習前,這6個框架你得了解!

深入機器學習前,這6個框架你得了解!

2017-07-10 愛學習像愛生命的 StuQ

來源| IT168文庫編輯| Emily隔壁家的老鐵又要放大招了!

機器學習框架和深度學習框架之間是有區別的。本質上,機器學習框架涵蓋用於分類,迴歸,聚類,異常檢測等各種學習方法,並且其可以不包括神經網絡方法。深度學習或深度神經網絡(DNN)框架涵蓋具有許多隱藏層的神經網絡拓撲。層越多,可用於聚類和分類的特徵越複雜。

Caffe,CNTK,DeepLearning4j,Keras,MXNet和TensorFlow是深度學習框架。Scikit-learning和Spark MLlib是機器學習框架。而Theano跨越了這兩個類別。一般來說,簡單的機器學習方法不需要GPU加速。雖然你可以在一個或多個CPU上訓練DNN,但這種訓練往往是緩慢的,需要訓練的神經元和層越多,可用於訓練的數據越多,需要的時間就越長。

Caffe

Caffe深度學習項目,最初是一個強大的圖像分類框架,目前似乎停滯不前,它已被卡在1.0版RC3一年多了,並且其創始人已離開該項目 。但它仍然有良好的卷積網絡圖像識別和良好的Nvidia CUDA GPU支持。但它的模型通常需要大量的GPU內存(超過1GB)運行。

Caffe有命令行,Python和Matlab接口,它依靠ProtoText文件來定義模型和解算器。Caffe在其自己的模型模式中逐層定義網絡。當數據和派生數據向前向後遍歷網絡時,Caffe存儲,通信和操作信息爲blob(二進制對象),內部是以C連續方式存儲的N維數組。Caffe已經證明其在圖像分類中的有效性,但它的鼎盛時期似乎已經過去了。除非現有的Caffe模型符合你的需要,或者可以根據你的目的進行微調,否則,我建議使用TensorFlow,MXNet或CNTK。

Microsoft認知工具包

Microsoft Cognitive Toolkit是一個快速的易使用的深度學習軟件包,但與TensorFlow相比,其範圍有限。它有各種各樣的模型和算法,極好的支持Python和Jupyter notebook,一個有趣的聲明性BrainScript神經網絡配置語言,以及在Windows和Ubuntu Linux上可自動部署。

在缺點方面,當我審查Beta 1文檔時發現還沒完全更新到CNTK 2,並且包沒有MacOS支持。雖然自Beta 1以來,CNTK 2有許多改進,包括新的內存壓縮模式,以減少GPU和新的Nuget安裝包的內存使用,但MacOS支持仍然缺失。

CNTK 2組件可以處理來自Python,C ++或BrainScript的多維密集或稀疏數據。認知工具包包括各種各樣的神經網絡類型:FFN(前饋),CNN(卷積),RNN / LSTM(遞歸/長期短期記憶)等。它支持強化學習,生成監督和非監督學習,自動超參數調整,以及從Python添加新的,用戶定義的核心組件在GPU上的能力。它能夠在多個GPU和機器上做到精確的並行。

MXNet

MXNet是一個便攜式,可擴展的深度學習庫,是亞馬遜推出的DNN框架選擇。MXNet可跨多個主機擴展到多個GPU,線性擴展效率接近85%,具有出色的開發速度,可編程性和可移植性。它不同程度的支持Python,R,Scala,Julia和C ++,它允許混合命令式編程風格。MXNet目前支持在Python,R,Scala,Julia和C ++中構建和訓練模型,訓練的MXNet模型也可以用於Matlab和JavaScript中的預測。無論選擇哪種語言來構建模型,MXNet都會調用優化的C ++後端引擎。

Scikit-learn

Scikit-learn Python框架有廣泛的可靠的機器學習算法,但沒有深入學習。如果你是一個Python的粉絲,Scikit-learn可能是你最好的選擇。Scikit-learn是一個強大的,成熟的機器學習庫與各種各樣的成熟算法集成。它相對容易安裝,學習和使用,它有很好的例子和教程。

另一方面,Scikit-learn不包括深度學習或強化學習,缺少圖形模型和序列預測,並且不能真正使用除Python之外的語言。它不支持PyPy,Python即時編譯器或GPU。它使用Cython來處理快速函數,例如內循環。

Spark MLlib

Spark MLlib是Spark的開源機器學習庫,提供常見的機器學習算法,如分類,迴歸,聚類和協同過濾(但不包括DNN)以及特徵提取,轉換,維數縮減以及構建,評估和調整機器學習管道。Spark MLlib還包括用於保存和加載算法,用於數據處理以及進行線性代數和統計的實用程序。

Spark MLlib是在Scala中編寫的,並使用線性代數包BreezeBreeze依靠netlib-java來優化數值處理,雖然在開源分佈中意味着優化使用CPU。Databricks提供與GPU配合使用的定製Spark集羣,這有可能帶來一個10倍的速度改進,用於訓練具有大數據的複雜機器學習模型。

Spark MLlib擁有針對Scala和Java的完整API,主要是針對Python的完整API以及針對R的部分API。可以通過計算示例來獲得良好的覆蓋率:54個Java和60個Scala機器學習示例,52個Python 機器學習示例,5個R示例。

TensorFlow

TensorFlow,Google的便攜式機器學習和神經網絡庫,執行和擴展很好,雖然它有點難學。TensorFlow擁有各種各樣的模型和算法,並且在具有GPU(用於培訓)或Google TPU(用於生產規模預測)的硬件上具有出色的性能。它還具有對Python的良好支持,良好的文檔和軟件,用於顯示和理解描述其計算TensorBoard的數據流圖。

TensorFlow可以方便地處理各種神經網絡,包括目前正在轉換圖像識別和語言處理領域的深度CNN和LSTM循環模型。調試異步網絡求解器非常簡單,TensorBoard軟件可以幫助可視化圖形。


從Caffe,Microsoft Cognitive Toolkit,MXNet和TensorFlow的深度學習包中選擇一個是很困難的決定。我不建議選擇Caffe,因爲它的發展停滯不前。然而,選擇其他三個中的一個也很棘手。

Cognitive Toolkit現在有Python和C ++ API以及網絡配置語言BrainScript。 如果喜歡使用配置文件,那麼Cognitive Toolkit可能是一個不錯的選擇。但它似乎不像TensorFlow一樣成熟,它不能在MacOS上運行。MXNet支持Python,R,Scala,Julia和C ++,但其最支持的API是用於Python的。MXNet在多個主機的多個GPU上展現出良好的擴展性(85%的線性)。

TensorFlow可能是三個包中最成熟的,並且它是一個很好的選擇,TensorFlow有基本的構建塊,但也需要寫大量的代碼來描述一個神經網絡。有三個簡化的API與TensorFlow一起來解決這個問題:tf.contrib.learn,TF-Slim和Keras。支持TensorFlow的最終考慮是TensorBoard,這對於可視化和理解數據流圖非常有用。


看完覺得很漲姿勢?

爲了讓大家更深入的掌握機器學習經典框架及其用法StuQ在7月11日20:00-21:00,推出公開課《1小時入門機器學習經典框架》。

原價99元現在免費開放給大家,快添加海報中二維碼報名吧~


長按二維碼,添加小助手,得到聽課地址~

圖片來源:網絡


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章