日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 消費電子 > 消費電子
[導(dǎo)讀]本節(jié)對5個開源深度學(xué)習(xí)框架進行對比研究,主要側(cè)重于3個維度研究:硬件支持率、速度和準確率、社區(qū)活躍性。他們分別是:TensorFlow、Caffe、Keras、Torch、DL4j 。2.3.1 硬

本節(jié)對5個開源深度學(xué)習(xí)框架進行對比研究,主要側(cè)重于3個維度研究:硬件支持率、速度和準確率、社區(qū)活躍性。他們分別是:TensorFlow、Caffe、Keras、Torch、DL4j 。

2.3.1 硬件支持率

本節(jié)研究的硬件利用率指不同開源深度學(xué)習(xí)框架對于不同CPU/GPU配置下對硬件的支持效率與通用性能表現(xiàn)。

 

 

表2.1展示了各框架對于不同硬件的通用支持性能。

2.3.2 速度和準確率

本節(jié)將梯度計算時間、前饋傳播和反饋傳播時間總和度量,不對各項進行細分。且所有試驗數(shù)據(jù)基于CPU。

模型

本節(jié)選取全鏈接神經(jīng)網(wǎng)絡(luò)(Fully Connected Neural Network, FCNN)作為深度學(xué)習(xí)框架速度測試模型。FCNN被視為前饋多層感知網(wǎng)絡(luò),意味著網(wǎng)絡(luò)神經(jīng)元之間的連接是單向的,不包含環(huán)狀連接,因此容易獲得時間數(shù)據(jù)。FCNN最主要的用途在于進行數(shù)據(jù)分類工作,因此適合對不同框架下的準確率進行對比。

數(shù)據(jù)集

本節(jié)選取MNIST手寫數(shù)字圖片集作為FCNN的數(shù)據(jù)集對不同框架進行測試。MNIST數(shù)據(jù)集由6000張訓(xùn)練圖像集和1000張測試圖像集組成,均為28X28像素的手寫數(shù)字圖片。

測試方法

本節(jié)目標在于對比測試FCNN類型的神經(jīng)網(wǎng)絡(luò)在不同框架上的收斂所耗時間以及預(yù)訓(xùn)練網(wǎng)絡(luò)在不同框架上對于分類結(jié)果預(yù)測的準確性。主要考察以下方面:1.收斂速度;2.預(yù)測耗時;3.分類準確性;4.源代碼規(guī)模;

為了評估模型的可擴展性,采用不同的擴展性因子來度量上述1-3點。神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)采用兩種尺度進行測試:1.使用相同的神經(jīng)元數(shù)來改變網(wǎng)絡(luò)的“深度”(見圖2.10);2.使用相同的層數(shù)來改變網(wǎng)絡(luò)的“寬度”(見圖2.11);

 

 

圖2.9 “深度”改變了的神經(jīng)網(wǎng)絡(luò)

 

 

圖2.10 “寬度”改變了的神經(jīng)網(wǎng)絡(luò)

測試結(jié)果

圖2.11-圖2.14展示了FCNN基于各框架使 用Tanh非線性激活函數(shù)的情況下的訓(xùn)練時間、預(yù)測時間和分類準確度。所有試驗的Epoch設(shè)定為10。

 

 

圖2.11 基于Tanh激活的FCNN在改變“深度”情況下的訓(xùn)練時間

 

 

圖2.12 基于Tanh激活的FCNN在改變“深度”情況下的預(yù)測時間

 

 

圖2.13 基于Tanh激活的FCNN在改變“深度”情況下的分類準確率

類似的,圖2.14-圖2.16展示了FCNN基于各框架使用ReLU非線形激活函數(shù)的情況下的訓(xùn)練時間。

 

 

圖2.14 基于ReLU激活的FCNN在改變“深度”情況下的訓(xùn)練時間

 

 

圖2.15 基于ReLU激活的FCNN在改變“深度”情況下的預(yù)測時間

 

 

圖2.16 基于ReLU激活的FCNN在改變“深度”情況下的分類準確率

下面的試驗考察當(dāng)網(wǎng)絡(luò)隱含層的尺寸(如神經(jīng)元個數(shù))如圖2.10的方式改變時,F(xiàn)CNN在不同框架上的速度、準確率的變化情況。試驗結(jié)果分別于圖2.17-圖2.19種一同樣的方式被展示。

 

 

圖2.17 基于ReLU激活的FCNN在改變“寬度”情況下的訓(xùn)練時間

 

 

圖2.18 基于ReLU激活的FCNN在改變“寬度”情況下的預(yù)測時間

 

 

圖2.19 基于ReLU激活的FCNN在改變“寬度”情況下的分類準確率

我們結(jié)合相關(guān)算法實現(xiàn)的代碼量與接口語言來衡量深度學(xué)習(xí)框架的復(fù)雜度。各框架的復(fù)雜度對比見表2.1和圖2.20所示。

 

 

表2.1 各框架的復(fù)雜性

 

 

圖2.20 復(fù)雜性的代碼行表現(xiàn)

2.3.3 社區(qū)活躍度

速度是衡量源深度學(xué)習(xí)框架性能的一個重要指標,同時,對各開源深度學(xué)習(xí)框架的貢獻者數(shù)量和開源社區(qū)的活躍度也同等重要。無論對于學(xué)術(shù)研究或是工業(yè)項目開發(fā)與部署,社區(qū)活躍度與知識獲取與開發(fā)成本關(guān)系十分密切。

GitHub社區(qū)項目的Watch、Star、Fork數(shù)量可反映出各深度學(xué)習(xí)框架的活躍度(如圖2.21-2.23所示)。其中Watch反應(yīng)了各框架的瀏覽量,Star數(shù)量代表社區(qū)使用者對框架的點贊數(shù),F(xiàn)ork則指框架被拷貝的數(shù)量。

 

 

圖2.21 GitHub社區(qū)各開源深度學(xué)習(xí)框架的Watch數(shù)

 

 

圖2.22 GitHub社區(qū)各開源深度學(xué)習(xí)框架的Star數(shù)

 

 

圖2.23 GitHub社區(qū)各開源深度學(xué)習(xí)框架的Fork數(shù)

當(dāng)跳出深度學(xué)習(xí)框架本身,在GitHub檢索基于各框架的項目、筆記、討論時,圖2.24-圖2.26展示出了基于各框架的項目的活躍情況。

 

 

圖2.24 GitHub社區(qū)基于各開源深度學(xué)習(xí)框架的repositories

 

 

圖2.25 GitHub社區(qū)基于各開源深度學(xué)習(xí)框架的Commits

 

 

圖2.26 GitHub社區(qū)基于各開源深度學(xué)習(xí)框架的Commits

2.3.3 工業(yè)表現(xiàn)能力

開源深度學(xué)習(xí)框架不僅對學(xué)術(shù)研究提供了有力的支持,同時也為工業(yè)界解決任務(wù)提供了眾多解決方案。本節(jié)將從模型表達能力、接口、部署、性能和架構(gòu)等方面度量各開源框架在工業(yè)生產(chǎn)領(lǐng)域的表現(xiàn)。

 

 

圖2.27 各框架支持語言

 

 

表2.2 各框架工業(yè)能力評分(GitHub)

網(wǎng)絡(luò)和模型能力

Caffe在計算機視覺領(lǐng)域是最流行的工具包,有很多擴展,但對遞歸網(wǎng)絡(luò)和語言建模的支持很差。此外,在Caffe中圖層需要使用C++定義,而網(wǎng)絡(luò)則使用Protobuf定義。

TensorFlow是一個理想的RNN API和實現(xiàn),向量運算的圖方法使得新網(wǎng)絡(luò)的指定變得相當(dāng)容易,但其并不支持雙向RNN和3D卷積,同時公共版本的圖定義也不支持循環(huán)和條件控制,這使得RNN的實現(xiàn)并不理想,因為必須要使用Python循環(huán)且無法進行圖編譯優(yōu)化。

Theano支持大部分先進的網(wǎng)絡(luò),很多研究想法都來源于Theano,它引領(lǐng)了符號圖在編程網(wǎng)絡(luò)中使用的趨勢。Theano的符號API支持循環(huán)控制,讓RNN的實現(xiàn)更加容易且高效。

Torch對卷積網(wǎng)絡(luò)的支持非常好,通過時域卷積的本地接口使得它的使用非常直觀。Torch通過很多非官方的擴展支持大量的RNN,同時網(wǎng)絡(luò)的定義方法也有很多種。但Torch本質(zhì)上是以圖層的方式定義網(wǎng)絡(luò)的,這種粗粒度的方式使得它對新圖層類型的擴展缺乏足夠的支持。與Caffe相比,在Torch中定義新圖層非常容易,不需要使用C++編程,圖層和網(wǎng)絡(luò)定義方式之間的區(qū)別最小。

接口

Caffe支持pycaffe接口,但這僅僅是用來輔助命令行接口的,而即便是使用pycaffe也必須使用protobuf定義模型。

TensorFlow支持Python和C++兩種類型的接口。用戶可以在一個相對豐富的高層環(huán)境中做實驗并在需要本地代碼或低延遲的環(huán)境中部署模型。

Theano支持Python接口。

Torch運行在LuaJIT上,與C++、C#以及Java等工業(yè)語言相比速度非常快,用戶可編寫任意類型的計算而不需要擔(dān)心性能,但Lua并非主流語言。

模型部署

Caffe基于C++,可在多種設(shè)備上編譯,具有跨平臺性,是部署項目的最佳選擇。

TensorFlow支持C++接口,同時能夠基于ARM架構(gòu)編譯和優(yōu)化。用戶可將成熟模型部署在多種設(shè)備上而不需實現(xiàn)單獨的模型解碼器或者加載Python/LuaJIT解釋器。

Theano缺少底層的接口,并且其Python解釋器也很低效。

Torch的模型運行需要LuaJIT的支持,對集成造成了很大的障礙。

性能

Caffe 簡單快速。

TensorFlow僅使用了cuDNN v2,但即使如此它的性能依然要比同樣使用cuDNN v2的Torch要慢1.5倍,并且在批大小為128時訓(xùn)練GoogleNet還出現(xiàn)了內(nèi)存溢出的問題。

Theano在大型網(wǎng)絡(luò)上的性能與Torch7不相上下。但其因需要將C/CUDA代碼編譯成二進制而啟動時間過長。此外,Theano的導(dǎo)入也會消耗時間,并且在導(dǎo)入之后無法擺脫預(yù)配置的設(shè)備。

Torch非常好,沒有TensorFlow和Theano的問題。

架構(gòu)

Caffe的主要劣勢是圖層需要使用C++定義,而模型需要使用protobuf定義。此外,如果想要支持CPU和GPU,用戶還必須實現(xiàn)額外的函數(shù);對于自定義的層類型,還須為其分配id,并將其添加到proto文件中。

TensorFlow的架構(gòu)清晰,采用了模塊化設(shè)計,支持多種前端和執(zhí)行平臺。

Theano 的整個代碼庫都使用Python,連C/CUDA代碼也要被打包為Python字符串,這使其難以導(dǎo)航、調(diào)試、重構(gòu)和維護。

Torch7和nn類庫擁有清晰的設(shè)計和模塊化的接口。

2.2.4 結(jié)論

1. 各深度學(xué)習(xí)框架對于硬件的利用情況:

多線程CPU的情況下Torch使用的最廣泛;

TensorFlow在多GPU的條件下最為靈活可用;

2. 各深度學(xué)習(xí)框架對于速度:

在網(wǎng)絡(luò)“深度”改變的情況下,Keras具有最快的訓(xùn)練速度,TensorFlow具有最快的預(yù)測響應(yīng)速度;

在網(wǎng)絡(luò)“寬度”改變的情況下,Caffe具有最快的訓(xùn)練速度,TensorFlow在“寬度”改變較小的情況下具有最快的預(yù)測響應(yīng)速度,“寬度”改變較大時Keras具有最快的響應(yīng)速度,TensorFlow緊隨其后;

3. 各深度學(xué)習(xí)框架對于準確率:

在網(wǎng)絡(luò)“深度”改變的情況下,TensorFlow和Torch的分類準確率隨網(wǎng)絡(luò)“深度”的增加而下降;

在網(wǎng)絡(luò)“寬度”改變的情況下,TensorFlow的分類預(yù)測準確率相對穩(wěn)定,超越CaffeTorch;

無論在網(wǎng)絡(luò)“深度”或是“寬度”改變的情況下,Keras對分類預(yù)測的準確率十分穩(wěn)定,且超越其他框架,具有最佳的預(yù)測準確率;

4. 各深度學(xué)習(xí)框架的社區(qū)活躍度:

TensorFlow可以定義為“最流行”、“最被認可”的開源深度學(xué)習(xí)框架。其在GitHub上無論是Star數(shù)、Fork數(shù),或是檢索基于TensorFlow的項目數(shù),都大大超過其他框架,甚至超越其他框架資源的總和。

5. 各深度學(xué)習(xí)框架的工業(yè)表達能力:

Caffe具有優(yōu)秀的模型表達能力和工業(yè)部署能力,尤其是計算機視覺方面,但對RNN和語言建模的支持很差。Caffe適用于視覺任務(wù)處理,尤其是基于深度學(xué)習(xí)的工業(yè)項目,其具有無可爭議的生產(chǎn)穩(wěn)定性;但其缺乏靈活性,這使得對網(wǎng)絡(luò)結(jié)構(gòu)的改變比其他框架麻煩,且Caffe的文檔十分匱乏,代碼閱讀困難高于其他框架。

Tensorflow具有很好的模型表達能力、優(yōu)秀的接口和清晰的內(nèi)部框架,適用于工業(yè)項目部署,但其速度性能不具備優(yōu)勢;TensorFlow支持分布式計算,使得硬件設(shè)備的性能得到最充分發(fā)揮;其代碼的可讀性和社區(qū)活躍度使得無論是學(xué)術(shù)研究或工業(yè)生產(chǎn)變得容易;

Keras具有良好的速度性能、模型表達能力,使用簡潔、方便—只需幾行代碼就能構(gòu)建一個神經(jīng)網(wǎng)絡(luò)。Keras具有完整的文檔,使得學(xué)習(xí)和使用十分容易—即便不熟悉Python。其更適用于學(xué)術(shù)研究、實驗或輕量級工業(yè)任務(wù)(如獲取特征值);

Torch具有十分優(yōu)秀的速度性能,但其使用Lua語言;

DL4j兼容JVM,也適用 Java、Clojure和 Scala;

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉