成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機器學習和深度學習的最佳框架大比拼

開發 架構
機器學習框架和深度學習框架之間有區別。本質上,機器學習框架涵蓋用于分類,回歸,聚類,異常檢測和數據準備的各種學習方法,并且其可以或可以不包括神經網絡方法。深度學習或深度神經網絡(DNN)框架涵蓋具有許多隱藏層的各種神經網絡拓撲。這些層包括模式識別的多步驟過程。網絡中的層越多,可以提取用于聚類和分類的特征越復雜。

在過去的一年里,咱們討論了六個開源機器學習和/或深度學習框架:Caffe,Microsoft Cognitive Toolkit(又名CNTK 2),MXNet,Scikit-learn,Spark MLlib和TensorFlow。如果把網撒得大些,可能還會覆蓋其他幾個流行的框架,包括Theano(一個10年之久的Python深度學習和機器學習框架),Keras(一個Theano和TensorFlow深度學習的前端),DeepLearning4j(Java和Scala在Hadoop和Spark之上的深度學習軟件)。如果你有興趣使用機器學習和神經網絡,你從來沒有像現在這樣多的選擇。

機器學習框架和深度學習框架之間有區別。本質上,機器學習框架涵蓋用于分類,回歸,聚類,異常檢測和數據準備的各種學習方法,并且其可以或可以不包括神經網絡方法。深度學習或深度神經網絡(DNN)框架涵蓋具有許多隱藏層的各種神經網絡拓撲。這些層包括模式識別的多步驟過程。網絡中的層越多,可以提取用于聚類和分類的特征越復雜。

Caffe,CNTK,DeepLearning4j,Keras,MXNet和TensorFlow是深度學習框架。 Scikit-learning和Spark MLlib是機器學習框架。 Theano跨越了這兩個類別。

一般來說,深層神經網絡計算在GPU(特別是Nvidia CUDA通用GPU,大多數框架)上運行的速度要比CPU快一個數量級。一般來說,更簡單的機器學習方法不需要GPU的加速。

雖然你可以在一個或多個CPU上訓練DNN,訓練往往是緩慢的,慢慢我不是說秒或分鐘。需要訓練的神經元和層數越多,可用于訓練的數據越多,需要的時間就越長。當Google Brain小組在2016年針對新版Google翻譯訓練語言翻譯模型時,他們在多個GPU上同時運行了一周的訓練時間。沒有GPU,每個模型訓練實驗將需要幾個月。

這些框架中每一個框架具有至少一個顯著特征。 Caffe的強項是用于圖像識別的卷積DNN。 Cognitive Toolkit有一個單獨的評估庫,用于部署在ASP.Net網站上工作的預測模型。 MXNet具有良好的可擴展性,可用于多GPU和多機器配置的訓練。 Scikit-learn具有廣泛的強大的機器學習方法,易學已用。 Spark MLlib與Hadoop集成,具有良好的機器學習可伸縮性。 TensorFlow為其網絡圖TensorBoard提供了一個獨特的診斷工具。

另一方面,所有深度學習框架在GPU上的訓練速度幾乎相同。這是因為訓練內循環在Nvidia CuDNN包中花費大部分時間。然而,每個框架采用一種不同的方法來描述神經網絡,具有兩個主要的陣營:使用圖形描述文件的陣營,以及通過執行代碼來創建它們的描述的陣營。

考慮到這一點,讓我們來看看每一個框架的特性。

Caffe(咖啡)

Caffe深度學習項目,最初是一個強大的圖像分類框架,似乎停滯不前,基于它的持續的bug,以及它已被卡住1.0版RC3一年多的事實,并且創始人已離開項目。它仍然有良好的卷積網絡圖像識別和良好的支持Nvidia CUDA GPU,以及一個簡單的網絡描述格式。另一方面,它的模型通常需要大量的GPU內存(超過1GB)運行,它的文檔是多斑點和問題,支持很難獲得,安裝是iffy,特別是對于它的Python筆記本支持。

Caffe有命令行,Python和Matlab接口,它依靠ProtoText文件來定義它的模型和求解器。 Caffe在其自己的模型模式中逐層定義網絡。網絡定義從輸入數據到丟失的整個模型。當數據和派生數據在前向和后向遍歷網絡時,Caffe存儲,通信和操作信息為blob(二進制大對象),內部是以C連續方式存儲的N維數組(表示行該數組被存儲在連續的存儲器塊中,如在C語言中)。 Blob之于Caffe如Tensor之于TensorFlow。

圖層對blob執行操作,并構成Caffe模型的組件。層卷積濾波器,執行池,取內部乘積,應用非線性(諸如整流線性和S形以及其他元素方面的變換),歸一化,加載數據和計算諸如softmax和鉸鏈的損失。

Caffe已經證明其在圖像分類中的有效性,但它的時刻似乎已經過去了。除非現有的Caffe模型符合您的需要,或者可以根據您的目的進行微調,我建議使用TensorFlow,MXNet或CNTK。

在NBViewer中顯示的預先計算的CaffeJupyter筆記本。這本筆記本解釋了使用一只可愛的小貓在Caffe網絡上做“手術”。

Microsoft Cognitive Toolkit(Microsoft認知工具包)

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

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

為Beta 1添加的PythonAPI有助于將認知工具包帶入主流的、用Python碼的、深度學習研究人員當中。 API包含模型定義和計算、學習算法、數據讀取和分布式訓練的抽象。作為PythonAPI的補充,CNTK 2具有新的Python示例和教程,以及對 Google Protocol Buffer序列化的支持。教程以Jupyter筆記本實現。

CNTK 2組件可以處理來自Python,C ++或BrainScript的多維密集或稀疏數據。認知工具包包括各種各樣的神經網絡類型:FFN(前饋),CNN(卷積),RNN/ LSTM(遞歸/長期短期記憶),批次標準化和序列注意序列。它支持強化學習,生成對抗網絡,監督和非監督學習,自動超參數調整,以及從Python添加新的,用戶定義的核心組件在GPU上運行的能力。它能夠在多個GPU和機器上做到精確的并行性,而且(微軟聲稱)它甚至可以適應***的模型到GPU內存。

CNTK 2 API支持從Python,C ++和BrainScript定義網絡,學習者,讀者,培訓和評估。他們還支持使用C#進行評估。 Python API與NumPy互操作,并包括一個高級層級庫,可以精確定義包括復現在內的高級神經網絡。該工具包支持以符號形式表示循環模型作為神經網絡中的循環,而不需要靜態展開循環步驟。

您可以在Azure網絡和GPU上訓練CNTK 2模型。配備GPU的N系列Azure虛擬機系列,在我審核Beta 1時受到限制,現在通常可以從Azure控制臺獲得并完全管理。

幾個CNTK 2 / Microsoft Cognitive Toolkit教程以Jupyter筆記本提供。該圖顯示了Logistic回歸訓練的繪制的可視化。

MXNet

MXNet是一個可移植的、可伸縮的深度學習庫,是亞馬遜的DNN框架的選擇,結合了神經網絡幾何的象征性聲明與張量操作的命令性編程。 MXNet可跨多個主機擴展到多個GPU,接近線性擴展效率為85%,具有出色的開發速度、可編程性和可移植性。它支持Python,R,Scala,Julia和C ++,支持程度各不相同,它允許你混合符號和命令式編程風格

在我***次評論MXNet時,文檔感覺還沒有完成,除Python之外,我發現很少有其它語言的例子。自從我評論以后,這兩種情況都有所改善。

MXNet平臺是建立在一個動態依賴調度器上的,它可以自動并行化符號和命令式操作,但是你必須告訴MXNet要使用哪些GPU和CPU核心。在調度器頂部的圖優化層使符號執行快速和內存高效。

MXNet目前支持用Python,R,Scala,Julia和C ++構建和訓練模型;訓練的MXNet模型也可以用于Matlab和JavaScript中的預測。無論您選擇哪種語言來構建模型,MXNet都會調用優化的C ++后端引擎。

MXNet作者認為他們的API是Torch、Theano、Chainer和Caffe提供的一個超集,盡管對GPU集群有更多的可移植性和支持。在許多方面MXNet類似于TensorFlow,但增加了嵌入命令張量操作的能力。

除了實際強制的MNIST數字分類之外,MXNet教程的計算機視覺包含使用卷積神經網絡(CNN)的圖像分類和分割,使用更快的R-CNN的對象檢測,神經藝術和使用深度CNN的大規模圖像分類和ImageNet數據集。還有自然語言處理、語音識別、對抗網絡以及監督和非監督機器學習的其他教程。

亞馬遜測試了在P2.16xlarge實例上的MXNet中實現的Inception v3算法,發現其伸縮效率為85%。

Scikit-learn

Scikit-learn Python框架具有廣泛的可靠的機器學習算法,但沒有深度學習算法。如果你是一個Python粉絲,Scikit-learn可能是一般機器學習庫中***選擇。

Scikit-learn是一個強大的,成熟的機器學習Python庫,包含各種各樣成熟的算法和集成圖。它相對容易安裝、學習和使用,帶有很好的例子和教程。

在另一方面,Scikit-learn不包括深度學習或強化學習,缺少圖模型和序列預測,并且除Python之外,不能真正使用其它語言。它不支持PyPy,Python即時編譯器或GPU。也就是說,除了它的少量進入神經網絡,它不會真的有速度問題。它使用Cython(Python到C編譯器)來處理需要快速的函數,例如內循環。

Scikit-learn對分類、回歸、聚類、降維、模型選擇和預處理算法具有很好的選擇。它有所有這些的良好的文檔和示例,但沒有任何種類的指導工作流以完成這些任務。

Scikit-learn贏得了易于開發的***分,主要是因為算法都像廣告和文檔一樣工作,API是一致的,設計良好,數據結構之間幾乎沒有“阻抗不匹配”。函數庫其中的功能已徹底充實,錯誤徹底消除,用來開發十分愉快。

本示例使用Scikit-learn的小手寫數字數據集來演示使用Label Spreading模型的半監督學習。在1,797總樣本中只有30個被標記。

另一方面,函數庫沒有涵蓋深度學習或強化學習,這隱藏了當前困難但重要的問題,例如準確的圖像分類和可靠的實時語言解析和翻譯。顯然,如果你對深度學習感興趣,你應該另覓他處。

然而,存在許多問題,從建立鏈接不同觀察值的預測函數到分類觀察值到學習未標記數據集的結構,這使得它們適應于普通的老的機器學習,而不需要數十層的神經元,對于這些領域 Scikit-learn 是非常好的選擇。

Spark MLlib

Spark MLlib是Spark的開源機器學習庫,提供了通用的機器學習算法,如分類、回歸、聚類和協同過濾(但不包括DNN)以及特征提取、轉換、維數降低工具,以及構建、評估和調整機器學習管道選擇和工具。Spark MLlib還包括用于保存和加載算法、模型和管線、用于數據處理以及進行線性代數和統計的實用程序。

Spark MLlib是用Scala編寫的,并使用線性代數包Breeze。 Breeze依靠netlib-java來優化數值處理,雖然在開源分布中意味著優化使用CPU。 Databricks提供與GPU配合使用的定制Spark集群,這有可能為您帶來另一個10倍的速度改進,用于訓練具有大數據的復雜機器學習模型。

MLlib實現了大量的分類和回歸的常用算法和模型,新手可能變得混亂不堪,無可適從,但專家最終可能會為分析數據找到一個很好的模型的數據。對于這么多的模型Spark2.x增加了超參數調優的重要特性,也稱為模型選擇。超參數t允許調優分析人員設置參數網格、估計器和評估器,并且它允許交叉驗證方法(耗時但準確)或訓練驗證分割方法(更快但不太準確)找到***數據模型。

Spark MLlib擁有針對Scala和Java的完整API,主要是針對Python的完整API以及針對R的粗略部分API。您可以通過計算示例來獲得良好的覆蓋率:54個Java和60個Scala機器學習示例,52個Python機器學習示例,只有五個R示例。在我的經驗中,Spark MLlib是最容易使用Jupyter筆記本,但你可以肯定地在控制臺運行它,如果你馴服詳細的Spark狀態消息。

Spark MLlib提供了你想要的基本機器學習、特性選擇、管道和持久性的任何東西。它在分類、回歸、聚類和過濾方面做得相當不錯。鑒于它是Spark的一部分,它具有訪問數據庫、流和其他數據源的強大訪問權限。另一方面,SparkMLlib并不真正采用與TensorFlow,MXNet,Caffe和Microsoft Cognitive Toolkit相同的方式建模和訓練深層神經網絡。

Spark MLlibPython示例(Naive Bayes)作為Databricks筆記本。注意解釋,代碼和輸出如何散布。

TensorFlow

TensorFlow,Google的可移植機器學習和神經網絡庫,執行和伸縮性很好,雖然它有點難學。TensorFlow擁有各種各樣的模型和算法,它們對深度學習非常重視,并且在具有GPU(用于訓練)或Google TPU(用于生產規模預測)的硬件上具有出色的性能。它還具有對Python的良好支持,良好的文檔和良好的軟件,用于顯示和理解描述其計算的數據流圖TensorBoard。

數據流圖中的節點表示數學運算,而圖的邊表示在它們之間流動的多維數據數組(張量)。這種靈活的架構允許您將計算部署到桌面、服務器或移動設備中的一個或多個CPU或GPU,而無需重寫代碼。

使用TensorFlow的主要語言是Python,雖然對C ++有限的支持。TensorFlow提供的教程包括手寫數字分類。圖像識別、字嵌入、遞歸神經網絡,用于機器翻譯的序列到序列模型、自然語言處理和基于PDE(偏微分方程)的模擬的應用。

TensorFlow可以方便地處理各種神經網絡,包括目前正在急劇變化的圖像識別和語言處理領域的深度CNN和LSTM遞歸模型。用于定義圖層的代碼可能fan,但是您方便但不詳細,可以使用三個可選的深度學習界面中的任何一個來修復它。雖然調試異步網絡求解器可以是平凡的,但TensorBoard軟件可以幫助您可視化圖。

TensorBoard顯示TensorFlow計算的圖形。我們放大了幾個部分來檢查圖形的細節。

總結

對于任何給定的預測任務,您應該使用哪種機器學習或深度學習包取決于機器學習的復雜性,用于訓練的數據量和形式,您的計算資源以及您的編程語言偏好和技能。它也可能取決于您是否喜歡使用代碼或配置文件定義模型。

但是,在開始自己的模型訓練考察之前,您可能希望了解來自Google,HPE和MicrosoftAzure云的任何預先訓練的應用機器學習服務是否能夠處理您的數據,無論是語音、文本或圖像。如果他們對你的數據不能很好地工作,你可能還想在嘗試基本的機器學習訓練(***,如果沒有其他工作)深度學習訓練之前,看看你能用簡單的統計方法獲得多大的好處。這里的原則是保持分析盡可能簡單,但不是更簡單。

在我討論的兩個基本的機器學習包,我建議喜歡Scala和在Hadoop中有他們的數據的使用Spark MLlib 。我建議喜歡Python的人Scikit-learn。

我應該提到那些喜歡Scala(和Java)的人和在Hadoop中有他們的數據的人的另一個選擇事Deeplearning4j。我沒有評論他,但是,因為其名稱意味著它是一個學習深度包。

選擇Caffe,Microsoft Cognitive Toolkit,MXNet和TensorFlow的深度學習包是一個更困難的決定。我不再建議使用Caffe,因為它的發展停滯不前。然而,選擇其他三個中的一個仍然是棘手,因為對于具有類似功能,它們都是***的選擇。

Cognitive Toolkit現在有Python和C ++ API以及網絡配置語言BrainScript。如果您喜歡使用配置文件而不是編程網絡拓撲,那么CognitiveToolkit可能是一個不錯的選擇。另一方面,它似乎不像TensorFlow一樣成熟,它不能在MacOS上運行。

MXNet支持Python、R、Scala、Julia和C ++,但其支持***的API是用Python開發的。 MXNet在多個主機上的多個GPU上展示出良好的伸縮性(85%的線性)。當我評論MXNet的文檔和示例是吝嗇的,但他們已經改進了。

TensorFlow可能是三個包中最成熟的,并且它是一個很好的選擇,只要你喜歡編寫Python,并可以克服學習曲線。 TensorFlow具有你可以使用基本的構建塊,它給你細粒度的控制,但也需要你編寫大量的代碼來描述一個神經網絡。有三個簡化的API與TensorFlow一起工作來解決這個問題:tf.contrib.learn,TF-Slim和Keras。支持TensorFlow的最終考慮是TensorBoard,它對于可視化和理解您的數據流圖非常有用。

文章來源:網路冷眼|翻譯

責任編輯:張燕妮 來源: 云頭條
相關推薦

2020-08-04 17:06:40

Merging Rebasing Git

2014-01-07 17:08:02

Java開源框架

2010-08-05 14:25:30

Flex框架

2010-05-28 11:09:51

SVN功能

2017-08-22 17:55:35

機器學習SparkTensorFlow

2011-01-19 11:10:30

2019-07-22 09:00:18

DialogflowAzure機器人

2010-03-18 14:54:46

主流無線技術

2010-07-14 13:38:51

Perl開發工具

2021-03-02 09:00:00

開源框架技術

2010-05-24 18:15:34

SVN中Branch和

2017-09-10 14:29:03

眼力

2010-09-08 15:41:28

SIP協議棧

2011-11-08 10:29:44

2021-03-15 21:07:17

IT行業薪酬薪水

2010-08-25 16:12:34

職場

2023-05-26 15:53:48

MidjourneyAI圖像

2018-10-25 14:08:07

KubernetesGoogle

2019-03-29 08:25:21

JSONXML前端

2011-04-01 09:18:01

MRTGCactiZabbix
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品中文字幕一区二区三区 | 日本黄色的视频 | 国产精品视频一二三区 | 国产精品久久久久一区二区三区 | 国产黄色大片在线免费观看 | 国产精品99 | 情侣酒店偷拍一区二区在线播放 | 久久精品一区二区 | 精品欧美一区二区在线观看 | www.99热这里只有精品 | 成人h视频在线 | 日韩视频免费在线 | 欧美一区二区网站 | 国产精品揄拍一区二区久久国内亚洲精 | 天堂一区二区三区 | 亚洲精品久久久久久宅男 | 国产精品欧美一区二区三区不卡 | 久热精品在线观看视频 | 91久久综合亚洲鲁鲁五月天 | 欧美三级网站 | 久久综合久久综合久久 | 精品香蕉一区二区三区 | 在线观看国产 | aaa级片| 国产在线视频一区 | 国产精品一二三区 | 99久久久久| 中文字幕在线视频精品 | 国产在线精品一区二区三区 | av三级| 欧美日韩一区二区在线观看 | xxx视频| 免费一级淫片aaa片毛片a级 | 色综合久久天天综合网 | 中文字幕一级毛片视频 | 久久久久国产精品 | 天堂亚洲 | 国产成人精品久久二区二区91 | 日韩福利在线 | 亚洲精品久久久久久一区二区 | 亚洲久视频|