日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

良心推薦!機(jī)器學(xué)習(xí)和深度學(xué)習(xí)最佳框架

 LibraryPKU 2017-11-20



       機(jī)器學(xué)習(xí)框架和深度學(xué)習(xí)框架之間是有區(qū)別的。本質(zhì)上,機(jī)器學(xué)習(xí)框架涵蓋用于分類,回歸,聚類,異常檢測等各種學(xué)習(xí)方法,并且其可以不包括神經(jīng)網(wǎng)絡(luò)方法。深度學(xué)習(xí)或深度神經(jīng)網(wǎng)絡(luò)(DNN)框架涵蓋具有許多隱藏層的神經(jīng)網(wǎng)絡(luò)拓?fù)洹釉蕉?,可用于聚類和分類的特征越?fù)雜。



       Caffe,CNTK,DeepLearning4j,Keras,MXNet和TensorFlow是深度學(xué)習(xí)框架。Scikit-learning和Spark MLlib是機(jī)器學(xué)習(xí)框架。而Theano跨越了這兩個類別。

一般來說,簡單的機(jī)器學(xué)習(xí)方法不需要GPU加速。雖然你可以在一個或多個CPU上訓(xùn)練DNN,但這種訓(xùn)練往往是緩慢的,需要訓(xùn)練的神經(jīng)元和層越多,可用于訓(xùn)練的數(shù)據(jù)越多,需要的時間就越長。


Caffe


       Caffe深度學(xué)習(xí)項(xiàng)目,最初是一個強(qiáng)大的圖像分類框架,目前似乎停滯不前,它已被卡在1.0版RC3一年多了,并且其創(chuàng)始人已離開該項(xiàng)目 。但它仍然有良好的卷積網(wǎng)絡(luò)圖像識別和良好的Nvidia CUDA GPU支持。但它的模型通常需要大量的GPU內(nèi)存(超過1GB)運(yùn)行。


        Caffe有命令行,Python和Matlab接口,它依靠ProtoText文件來定義模型和解算器。Caffe在其自己的模型模式中逐層定義網(wǎng)絡(luò)。當(dāng)數(shù)據(jù)和派生數(shù)據(jù)向前向后遍歷網(wǎng)絡(luò)時,Caffe存儲,通信和操作信息為blob(二進(jìn)制對象),內(nèi)部是以C連續(xù)方式存儲的N維數(shù)組。

Caffe已經(jīng)證明其在圖像分類中的有效性,但它的鼎盛時期似乎已經(jīng)過去了。除非現(xiàn)有的Caffe模型符合你的需要,或者可以根據(jù)你的目的進(jìn)行微調(diào),否則,我建議使用TensorFlow,MXNet或CNTK。


Microsoft認(rèn)知工具包


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


      在缺點(diǎn)方面,當(dāng)我審查Beta 1文檔時發(fā)現(xiàn)還沒完全更新到CNTK 2,并且包沒有MacOS支持。雖然自Beta 1以來,CNTK 2有許多改進(jìn),包括新的內(nèi)存壓縮模式,以減少GPU和新的Nuget安裝包的內(nèi)存使用,但MacOS支持仍然缺失。


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


MXNet


       MXNet是一個便攜式,可擴(kuò)展的深度學(xué)習(xí)庫,是亞馬遜推出的DNN框架選擇。MXNet可跨多個主機(jī)擴(kuò)展到多個GPU,線性擴(kuò)展效率接近85%,具有出色的開發(fā)速度,可編程性和可移植性。它不同程度的支持Python,R,Scala,Julia和C ++,它允許混合命令式編程風(fēng)格。

MXNet目前支持在Python,R,Scala,Julia和C ++中構(gòu)建和訓(xùn)練模型,訓(xùn)練的MXNet模型也可以用于Matlab和JavaScript中的預(yù)測。無論選擇哪種語言來構(gòu)建模型,MXNet都會調(diào)用優(yōu)化的C ++后端引擎。


Scikit-learn


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


       另一方面,Scikit-learn不包括深度學(xué)習(xí)或強(qiáng)化學(xué)習(xí),缺少圖形模型和序列預(yù)測,并且不能真正使用除Python之外的語言。它不支持PyPy,Python即時編譯器或GPU。它使用Cython來處理快速函數(shù),例如內(nèi)循環(huán)。

 

Spark MLlib

 

       Spark MLlib是Spark的開源機(jī)器學(xué)習(xí)庫,提供常見的機(jī)器學(xué)習(xí)算法,如分類,回歸,聚類和協(xié)同過濾(但不包括DNN)以及特征提取,轉(zhuǎn)換,維數(shù)縮減以及構(gòu)建,評估和調(diào)整機(jī)器學(xué)習(xí)管道。Spark MLlib還包括用于保存和加載算法,用于數(shù)據(jù)處理以及進(jìn)行線性代數(shù)和統(tǒng)計的實(shí)用程序。


        Spark MLlib是在Scala中編寫的,并使用線性代數(shù)包BreezeBreeze依靠netlib-java來優(yōu)化數(shù)值處理,雖然在開源分布中意味著優(yōu)化使用CPU。Databricks提供與GPU配合使用的定制Spark集群,這有可能帶來一個10倍的速度改進(jìn),用于訓(xùn)練具有大數(shù)據(jù)的復(fù)雜機(jī)器學(xué)習(xí)模型。


       Spark MLlib擁有針對Scala和Java的完整API,主要是針對Python的完整API以及針對R的部分API??梢酝ㄟ^計算示例來獲得良好的覆蓋率:54個Java和60個Scala機(jī)器學(xué)習(xí)示例,52個Python 機(jī)器學(xué)習(xí)示例,5個R示例。


TensorFlow


       TensorFlow,Google的便攜式機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)庫,執(zhí)行和擴(kuò)展很好,雖然它有點(diǎn)難學(xué)。TensorFlow擁有各種各樣的模型和算法,并且在具有GPU(用于培訓(xùn))或Google TPU(用于生產(chǎn)規(guī)模預(yù)測)的硬件上具有出色的性能。它還具有對Python的良好支持,良好的文檔和軟件,用于顯示和理解描述其計算TensorBoard的數(shù)據(jù)流圖。


       TensorFlow可以方便地處理各種神經(jīng)網(wǎng)絡(luò),包括目前正在轉(zhuǎn)換圖像識別和語言處理領(lǐng)域的深度CNN和LSTM循環(huán)模型。調(diào)試異步網(wǎng)絡(luò)求解器非常簡單,TensorBoard軟件可以幫助可視化圖形。



       從Caffe,Microsoft Cognitive Toolkit,MXNet和TensorFlow的深度學(xué)習(xí)包中選擇一個是很困難的決定。我不建議選擇Caffe,因?yàn)樗陌l(fā)展停滯不前。然而,選擇其他三個中的一個也很棘手。


        Cognitive Toolkit現(xiàn)在有Python和C ++ API以及網(wǎng)絡(luò)配置語言BrainScript。 如果喜歡使用配置文件,那么Cognitive Toolkit可能是一個不錯的選擇。但它似乎不像TensorFlow一樣成熟,它不能在MacOS上運(yùn)行。

MXNet支持Python,R,Scala,Julia和C ++,但其最支持的API是用于Python的。MXNet在多個主機(jī)的多個GPU上展現(xiàn)出良好的擴(kuò)展性(85%的線性)。


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


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多