成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

初學者怎么選擇神經(jīng)網(wǎng)絡環(huán)境?對比MATLAB、Torch和TensorFlow

yunhao / 2995人閱讀

摘要:本報告面向的讀者是想要進入機器學習領域的學生和正在尋找新框架的專家。其輸入需要重塑為包含個元素的一維向量以滿足神經(jīng)網(wǎng)絡。卷積神經(jīng)網(wǎng)絡目前代表著用于圖像分類任務的較先進算法,并構(gòu)成了深度學習中的主要架構(gòu)。

初學者在學習神經(jīng)網(wǎng)絡的時候往往會有不知道從何處入手的困難,甚至可能不知道選擇什么工具入手才合適。近日,來自意大利的四位研究者發(fā)布了一篇題為《神經(jīng)網(wǎng)絡初學者:在 MATLAB、Torch 和 TensorFlow 中的快速實現(xiàn)(Neural Networks for Beginners A fast implementation in Matlab, Torch, TensorFlow)》的論文,對 MATLAB、Torch 和 TensorFlow 這三種神經(jīng)網(wǎng)絡工具進行了介紹和比較。機器之心對其中部分內(nèi)容進行了編譯介紹(其中第 6 節(jié)比較結(jié)論部分進行了全部介紹)。

本報告的目的

本報告提供了最常見的開發(fā)環(huán)境內(nèi)一些機器學習工具的介紹。本報告主要關注實際問題,跳過了任何理論介紹。本報告面向的讀者是想要進入機器學習領域的學生和正在尋找新框架的專家。

這篇論文是關于人工神經(jīng)網(wǎng)絡(ANN,[1,2])的,因為這是目前最熱門的主題,并且在許多人工智能任務上都達到了當前較佳的水平。在多帶帶介紹了每一種框架之后,我們同時也給出實現(xiàn)一些一般常見問題的設置方法,從而使它們的比較更簡單。

因為這個主題已經(jīng)得到了廣泛的研究,而且還在持續(xù)快速地增長,所以我們將這個文檔和一個 GitHub 庫進行了配對,這個庫中的文檔是動態(tài)更新的,而且以后可能還會擴大規(guī)模。

GitHub 地址:https://github.com/AILabUSiena/NeuralNetworksForBeginners

目錄

1 MATLAB:一個統(tǒng)一友好的環(huán)境

1.1 介紹

1.2 設置異或?qū)嶒?/p>

1.3 停止準則和正則化

1.4 繪制分離面

2 Torch 和 Lua 環(huán)境

2.1 介紹

2.2 起步

? 2.2.1 Lua

? 2.2.2 Torch 環(huán)境

2.3 設置異或?qū)嶒?/p>

2.4 停止準則和正則化

2.5 繪制分離面

3 TensorFlow

3.1 介紹

3.2 起步

? 3.2.1 Python

? 3.2.2 TensorFlow 環(huán)境

? 3.2.3 安裝

3.3 設置異或?qū)嶒?/p>

4 MNIST 手寫字符識別

4.1 MATLAB 上的 MNIST

4.2 Torch 上的 MNIST

4.3 TensorFlow 上的 MNIST

5 卷積神經(jīng)網(wǎng)絡

5.1 MATLAB

5.2 Torch

5.3 TensorFlow

6 關鍵比較

6.1 MATLAB

6.2 Torch

6.3 TensorFlow

6.4 比較總體概覽

6.5 計算問題

1、Matlab:一個統(tǒng)一的友好環(huán)境

1.1 介紹

Matlab 是一個強大的工具,能夠?qū)Υ蟛糠诸愋偷臄?shù)值運算、算法、編程和測試進行簡單又快速的處理。其直觀且友好的交互式接口使得它能簡單地對數(shù)據(jù)進行處理、可視化與分析。針對各種類型的任務,該軟件提供了大量的內(nèi)置數(shù)學函數(shù),以及豐富的、易于獲取的文檔。其主要設計是處理矩陣的,因此,幾乎所有的函數(shù)和運算都向量化了,也就是說它們可以管理標量以及向量、矩陣和張量(往往會有)。因此,其能更高效地避免循環(huán)(可能的時候),以及建立利用矩陣乘法的運算。

在此文檔中,我們只展現(xiàn)了一些簡單的用于上手人工神經(jīng)網(wǎng)絡(ANN)的機器學習相關的工具。我們假設讀者有基礎知識,并把重點放在了進一步信息的官方文檔上。例如,你可以從 Matlab 的官網(wǎng)發(fā)現(xiàn)如何掌握該軟件的相關信息。確實,其許可證并非免費的,雖然大部分大學會為學生提供教學用許可證,但可能也無法獲取目前所有的程序包。特別是 Statistic and Machine Learning Toolbox 和 Neural Network Toolbox 提供了大量內(nèi)置函數(shù)和模型,可用于實現(xiàn)適用于各類任務的不同 ANN 架構(gòu)。

即使我們參考一些簡多帶帶立的案例,這兩個工具也是基本所需的。最容易理解的是 nnstart 函數(shù),其能激活一個簡單的 GUI 并通過簡單的 2 層架構(gòu)來引導用戶。它能允許加載可用的數(shù)據(jù)樣本或使用用戶自定義數(shù)據(jù)(即輸入數(shù)據(jù)和對應目標的兩個矩陣),還能訓練網(wǎng)絡并分析結(jié)果(誤差趨勢、混淆矩陣、ROC 曲線等)。

然而,還有更多可用于特定任務的函數(shù)。比如說,patternnet 函數(shù)是專為模式識別問題而設計的、newfit 函數(shù)適用于回歸問題,而 feedforwardnet 函數(shù)是最靈活的,其允許構(gòu)建自定義的和復雜的網(wǎng)絡。所有的版本都以類似方式實現(xiàn),主要的選項和方法適用于所有函數(shù)。在下一章節(jié)中,我們展示了如何管理可定制架構(gòu),并開始解決非常基礎的問題。相關詳細信息可以在官方網(wǎng)站找到:http://ch.mathworks.com/help/nnet/getting-started-with-neural-network-toolbox.html

2、Torch 和 Lua 環(huán)境

2.1 介紹

Torch7 是一個易于使用并十分高效的科學計算框架,本質(zhì)上是面向機器學習算法的。Torch7 以 C 語言寫成,這就保證了高效性。然而,通過 LuaJIT 接口(其提供了一種快速和直觀的腳本語言),我們可以進行完全地交互(通常很方便)。此外,它還集成了支持 GPU 計算的 CUDA 環(huán)境的必要庫。截至目前,Torch7 是構(gòu)建任何種類拓撲結(jié)構(gòu)的 ANN 原型上最常用的工具之一。事實上,Torch7 現(xiàn)在有很多軟件包,有很大的社區(qū)和不斷的更新和改進,這些都讓我們可以非常簡單地開發(fā)幾乎任何種類的架構(gòu)。

有關安裝信息可以在官方網(wǎng)站入門部分找到:http://torch.ch/docs/getting-started.html。對基于 UNIX 的操作系統(tǒng),這一過程非常簡單直接,而 Windows 系統(tǒng)即使有替代方法(https://github.com/torch/torch7/wiki/Windows),但還沒有官方支持。如果已經(jīng)安裝了 CUDA,那么就會自動添加 cutorch 和 cunn 包,其中包含了處理 Nvidia GPU 的所有必要工具。

3、TensorFlow

3.1 簡介

TensorFlow [5] 是一個用于數(shù)值計算的開源軟件庫,其相比于其它機器學習框架是最年輕的。TensorFlow 最初由谷歌大腦團隊的研究員和工程師開發(fā),其目的是鼓勵對深度架構(gòu)的研究。然而,該環(huán)境對一些數(shù)值編程領域提供了大量的合適的工具。其計算方式是在數(shù)據(jù)流圖(Data Flow Graphs)概念下構(gòu)想的。圖的結(jié)點表示數(shù)學運算,圖的邊表示張量(多維數(shù)據(jù)數(shù)組)。該機器學習包的核心是用 C++寫的,但其提供了一個優(yōu)良的 Python API,而且有很好的文檔支持。TensorFlow 主要的特征是其符號方法,該方法允許對前向模型做出一般性定義,而將對應的衍生計算留給該環(huán)境本身執(zhí)行。

4、MNIST 手寫字符識別

在本章節(jié)中,我們將討論如何建立一個 2 層 ANN 以解決 MNIST [6] 分類問題,MNIST 是一個著名的手寫字體識別數(shù)據(jù)集。其廣泛用于測試和比較一般機器學習算法和計算視覺方法。該數(shù)據(jù)集提供 28×28 像素(灰度)的手寫數(shù)字圖像。訓練和測試集分別包含 6 萬與 1 萬條樣本。壓縮文件可以在官網(wǎng)獲得:http://yann.lecun.com/exdb/mnist/,同時還有大多數(shù)常見算法的性能測評列表。

我們展示了構(gòu)建的標準 2 層 ANN,其每一個隱藏層包含 300 個神經(jīng)元。如圖 4 所示,因為該網(wǎng)絡是在官方網(wǎng)站上測評報告的架構(gòu)之一,我們可以輕松地比較所得到的結(jié)果。其輸入需要重塑為包含 28 · 28 = 784 個元素的一維向量以滿足神經(jīng)網(wǎng)絡。每個圖像最初由包含灰度像素值 [0, 255] 的矩陣所表征,并將歸一化為 [0, 1] 之內(nèi)。輸出將是包含 10 個元素的預測向量,因為每個元素的標簽將由 one-hot 編碼的 10 空位二元向量組成。激活和懲罰函數(shù)在不同的環(huán)境中并不相同,這樣以提供一個不同方法的概覽。

圖 4:面向 MNIST 數(shù)據(jù)的 2 層網(wǎng)絡模型的一般架構(gòu)

5、卷積神經(jīng)網(wǎng)絡

在本章節(jié)中,我們將介紹卷積神經(jīng)網(wǎng)絡(CNN [7, 6, 8]),該神經(jīng)網(wǎng)絡是一種重要和強大的學習架構(gòu),其廣泛用于計算機視覺應用。卷積神經(jīng)網(wǎng)絡目前代表著用于圖像分類任務的較先進算法,并構(gòu)成了深度學習中的主要架構(gòu)。我們展示了在所有提到的框架內(nèi)如何構(gòu)建和訓練這樣一個神經(jīng)網(wǎng)絡,并且還探索了其最常用的功能和在 MNIST 上進行一些試驗以指出一些重要的特征。

圖 8:面向 MNIST 數(shù)據(jù)的 CNN 模型的一般架構(gòu)

圖 9:在 MNIST 圖像上用 Matlab 訓練后的第一個卷積層的 5 × 5 濾波器。

圖 11:在 2 × 2 較大池化的 MNIST 圖像上用 Torch 訓練的第一個卷積層的 5 × 5 濾波器。

圖 12:在 MNIST 圖像上用 TensorFlow 和所述的架構(gòu)訓練的第一個卷積層的 5 × 5 濾波器。

6、關鍵比較

在這一節(jié),我們將提供對這些環(huán)境的整體概覽。即使我們在表 1 中提供了基于一些我們認為和機器學習軟件開發(fā)主要相關的特征的分數(shù)比較,但本研究的目的并不是通過這樣簡單的評估來完成分析。相反,我們希望提出一個有用的引導,可幫助人們進入廣義上的 ANN 和機器學習領域,從而根據(jù)個人背景和要求來在環(huán)境中自我定位。更完整的和統(tǒng)計相關的比較可參閱:http://hammerprinciple.com/therighttool,這里我們進行了總結(jié),以幫助人們加速單個和全局的任務開發(fā)。

我們首先給出了每個環(huán)境的一般描述,然后我們嘗試在一些具體要求上比較了它們的優(yōu)缺點。最后,我們在不同的任務上進行了計算性能的指示性數(shù)值分析,這也可以作為一個比較和討論的主題。

6.1 MATLAB

該編程語言是直觀的,并且該軟件也提供了完整的軟件包——讓用戶可以無需編寫任何特定的代碼就能定義和訓練幾乎所有類型的人工神經(jīng)網(wǎng)絡架構(gòu)。其代碼并行化(code parallelization)是自動完成的,而且與 CUDA 的集成也很直接。其可用的內(nèi)置函數(shù)是高度可自定義和可優(yōu)化的,從而提供了快速的和可擴展的實驗設置方式,讓你可以輕松獲取網(wǎng)絡的變量以進行深度分析。但是,擴展和集成 Matlab 工具需要對于該環(huán)境的高階知識。這可能會驅(qū)使用戶開始從頭編寫其代碼,導致計算表現(xiàn)的普遍衰減。這些功能讓其成為了一個完美的統(tǒng)計和分析工具箱,但是作為開發(fā)環(huán)境來說還是慢了一點。其 GUI 需要一些重量級的計算,但另一方面,這對用戶很友好,而且還提供了較好的圖形數(shù)據(jù)可視化。MATLAB 的文檔很完整,在官網(wǎng)上也組織得非常好。

6.2 Torch

Torch 的編程語言(Lua)有時候有一點難,但它應該比這些語言中其它一些要快一點。其提供了所有所需的 CUDA 集成和 CPU 并行自動化。其基于模塊的結(jié)構(gòu)允許靈活的 ANN 架構(gòu),而且擴展其提供的軟件包也相對容易。而且其還有其它強大的軟件包,但一般而言它們需要一定的專業(yè)知識才能實現(xiàn)有意識的操作。Torch 可被輕松用于特定和一般算法測試的原型設計環(huán)境。其文檔遍布于整個 Torch 的 GitHub 庫,有時候不能立即解決一些特定的問題。

6.3 Tensor Flow

其使用了非常動態(tài)的語言 Python,讓用戶可以輕松地編寫腳本。其 CPU 并行化是自動的,而且其使用了計算圖結(jié)構(gòu),可以輕松利用 GPU 計算。其提供了很好的數(shù)據(jù)可視化,并且讓初學者也可以輕松地獲取已經(jīng)準備好的軟件包,盡管本文并沒有涉及到這方面。其符號計算(symbolic computation)的力量僅在前向步驟中涉及到用戶,而其反向步驟完全是由 TensorFlow 環(huán)境導出的。這樣的靈活性讓任何知識水平的用戶都可以非??焖俚剡M行開發(fā)。

6.4 整體比較情況概覽

就像之前說過的,我們嘗試在表 1 中總結(jié)出全局對比,根據(jù)不同的視角進行 1-5 的評分。下面介紹了主要的對比指標:

編程語言:它們所有的基本語言都非常直觀

GPU 集成:Matlab 因為需要額外的工具包而得分較低

CPU 并行化:所有的環(huán)境都可利用盡可能多的核(core)

函數(shù)可定制性:Matlab 得分較低,因為要將良好優(yōu)化的函數(shù)與已有的函數(shù)整合起來很困難

符號運算:Lua 不支持

網(wǎng)絡結(jié)構(gòu)可定制性:每種網(wǎng)絡都是可能的

數(shù)據(jù)可視化:交互式的 Matlab 優(yōu)于其它

安裝:所有都相當簡單,但 Matlab 的交互式 GUI 是個加分項

操作系統(tǒng)兼容性:Torch 在 Windows 上不容易安裝

語言性能:Matlab 接口有時候很沉重

開發(fā)靈活性:同樣,Matlab 得分低,因為其會迫使中等用戶精通其語言,才能有能力整合已有的工具或編寫出合適的代碼,一般來說,這會拖慢軟件開發(fā)速度。

表 1:三種環(huán)境的各項得分

6.5 計算問題

在表 2 中,我們比較了不同任務的運行時間,分析了 CPU 和 GPU 計算的優(yōu)點和不同之處。結(jié)果是 5 次實驗的平均得分,而且實驗都是在同一臺計算機上完成的,該計算機的配置是:32 核的英特爾 Xeon CPU E5-2650 v2 @ 2.60GHz、66 GB RAM、4 GB 內(nèi)存的 Geforce GTX 960。操作系統(tǒng)是 Debian GNU/Linux 8 (jessie)。我們在不同的網(wǎng)絡框架、批大?。òS機梯度下降(SGD)、1000 樣本批和完全批(Full Bacth))和硬件(在 HW 列說明)上測試了標準的梯度下降流程。這里用到的 CNN 架構(gòu)和圖 8 中給出的一樣。結(jié)果是通過嘗試使用盡可能相似的優(yōu)化流程而得到的。在實際中,我們很難在 Matlab 內(nèi)置的工具箱中應用特定的優(yōu)化技術。我們?yōu)?Torch 的第二個架構(gòu)(第 8 行)跳過了 SGD 的案例,因為其第一個架構(gòu)獲得了大量的計算時間。我們也跳過了使用 GPU 的 Matlab 在 ANN 上的 SGD,因為其訓練函數(shù)不支持 GPU 計算(第 4 和 10 行)。實際上,這可能是一個不常見的研究案例,但為了較好的完整性,我們還是報告其結(jié)果。我們跳過了在 GPU 上的 CNN Full Batch 的實驗,因為其內(nèi)存需求實在太高了。

表 2:給定環(huán)境在 MNIST 數(shù)據(jù)上用不同架構(gòu)訓練 10 epoch 5 次后的平均時間(秒)。所有架構(gòu)都使用了 ReLU 作為激活函數(shù),softmax 作為輸出函數(shù),交叉熵作為懲罰。

歡迎加入本站公開興趣群

商業(yè)智能與數(shù)據(jù)分析群

興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報表系統(tǒng)等全方位知識

QQ群:81035754

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/4528.html

相關文章

  • TensorFlow、MXNet、Keras如何取舍? 常用深度學習框架對比

    摘要:簡稱,是基于聚焦行業(yè)應用且提供商業(yè)支持的分布式深度學習框架,其宗旨是在合理的時間內(nèi)解決各類涉及大量數(shù)據(jù)的問題。是負責開發(fā)的用編寫,通過引擎加速的深度學習框架,是目前受關注最多的深度學習框架。 作者簡介魏秀參,曠視科技 Face++ 南京研究院負責人。南京大學 LAMDA 研究所博士,主要研究領域為計算機視覺和機器學習。在相關領域較高級國際期刊如 IEEE TIP、IEEE TNNLS、Mac...

    AlphaGooo 評論0 收藏0
  • Deep Learning 相關庫簡介

    摘要:首先是最頂層的抽象,這個里面最基礎的就是和,記憶中和的抽象是類似的,將計算結(jié)果和偏導結(jié)果用一個抽象類來表示了。不過,本身并沒有像其它兩個庫一樣提供,等模型的抽象類,因此往往不會直接使用去寫模型。 本文將從deep learning 相關工具庫的使用者角度來介紹下github上stars數(shù)排在前面的幾個庫(tensorflow, keras, torch, theano, skflow, la...

    ThinkSNS 評論0 收藏0
  • 最新Github上各DL框架Star數(shù)量大PK

    摘要:下圖總結(jié)了絕大多數(shù)上的開源深度學習框架項目,根據(jù)項目在的數(shù)量來評級,數(shù)據(jù)采集于年月初。然而,近期宣布將轉(zhuǎn)向作為其推薦深度學習框架因為它支持移動設備開發(fā)。該框架可以出色完成圖像識別,欺詐檢測和自然語言處理任務。 很多神經(jīng)網(wǎng)絡框架已開源多年,支持機器學習和人工智能的專有解決方案也有很多。多年以來,開發(fā)人員在Github上發(fā)布了一系列的可以支持圖像、手寫字、視頻、語音識別、自然語言處理、物體檢測的...

    oogh 評論0 收藏0
  • Keras vs PyTorch:誰是「第一」深度學習框架?

    摘要:第一個深度學習框架該怎么選對于初學者而言一直是個頭疼的問題。簡介和是頗受數(shù)據(jù)科學家歡迎的深度學習開源框架。就訓練速度而言,勝過對比總結(jié)和都是深度學習框架初學者非常棒的選擇。 「第一個深度學習框架該怎么選」對于初學者而言一直是個頭疼的問題。本文中,來自 deepsense.ai 的研究員給出了他們在高級框架上的答案。在 Keras 與 PyTorch 的對比中,作者還給出了相同神經(jīng)網(wǎng)絡在不同框...

    _DangJin 評論0 收藏0
  • 從框架優(yōu)缺點說起,這是一份TensorFlow入門極簡教程

    摘要:第一個主流產(chǎn)品級深度學習庫,于年由啟動。在年月日宣布,的開發(fā)將終止。張量中最基本的單位是常量變量和占位符。占位符并沒有初始值,它只會分配必要的內(nèi)存。是一個字典,在字典中需要給出每一個用到的占位符的取值。 為什么選擇 TensorFlow?在本文中,我們將對比當前最流行的深度學習框架(包括 Caffe、Theano、PyTorch、TensorFlow 和 Keras),幫助你為應用選擇最合適...

    AlphaWatch 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<