當前位置:首頁 > 智能硬件 > 人工智能AI
[導讀]   本文通過五個任務分別測試了 MLP、CNN 和 RNN 模型,機器之心不僅對該試驗進行了介紹,同時還使用 Keras(TensorFlow 后端)在 MNIST 數(shù)據(jù)集上試運行了 CNN。

  本文通過五個任務分別測試了 MLP、CNN 和 RNN 模型,機器之心不僅對該試驗進行了介紹,同時還使用 Keras(TensorFlow 后端)在 MNIST 數(shù)據(jù)集上試運行了 CNN。

  如果我們對 Keras 在數(shù)據(jù)科學和深度學習方面的流行還有疑問,那么考慮一下所有的主流云平臺和深度學習框架的支持情況就能發(fā)現(xiàn)它的強大之處。目前,Keras 官方版已經支持谷歌的 TensorFlow、微軟的 CNTK、蒙特利爾大學的 Theano,此外,AWS 去年就宣布 Keras 將支持 Apache MXNet,上個月發(fā)布的 MXNet 0.11 就新增 Core ML 和 Keras v1.2 的支持。不過到目前為止 MXNet 好像只支持 Keras v1.2.2 而不是最新版 2.0.5。

  

  盡管我們可以使用任何 Keras 所支持的后端部署模型,但開發(fā)者和方案架構師應該了解 Keras 作為各深度學習庫的高級 API,其本質上是不支持各個庫所提供的全部基本參數(shù)微調。因此如果我們想要精細調整后端框架所提供的所有參數(shù),那么我們最好直接使用深度學習框架而不是使用 Keras。當然這個情況會隨著各種工具添加到 Keras 和深度學習框架中而得到改善,但現(xiàn)在 Keras 仍是一個十分優(yōu)秀的工具,它能極好地適應于深度學習開發(fā)的早期階段,并且為數(shù)據(jù)科學家和算法工程師快速構建與測試復雜的深度學習模型提供了強大的工具。

  機器之心也嘗試使用 TensorFlow 作為后端測試了 Keras,我們發(fā)現(xiàn)整個模型的搭建非常簡潔,連入門者都能輕松讀懂整個網絡的架構。相比于直接使用 TensorFlow 搭建卷積神經網絡,將 Keras 作為高級 API,并使用 TensorFlow 作為后端要簡單地多。后面我們將會把 Keras 實現(xiàn) CNN 的代碼與注釋上傳至 機器之心 GitHub 項目 中,下圖是我們使用 TensorFlow 作為后端初始化訓練的情況:

  

  以下是整個卷積網絡的架構:

 

  上面的代碼清晰地定義了整個網絡疊加所使用的層級。SequenTIal 代表序貫模型,即多個網絡層的線性堆疊。在建立序貫模型后,我們可以從輸入層開始依次添加不同的層級以實現(xiàn)整個網絡的構建。上面的架構首先使用的是 2 維卷積層 Conv2D,卷積核大小為 3*3,激活函數(shù)為 ReLU,其中第一個參數(shù) 32 代表卷積核數(shù)目。此外,該卷積網絡還使用了最大池化層 MaxPooling2D,pool_size=(2,2) 為兩個方向(豎直,水平)上的下采樣因子;Dropout 層,以 0.25 的概率在每次更新參數(shù)時隨機斷開輸入的神經元;Dense 層,即全連接層;還有 Flatten 層,即將輸入「壓平」,也就是把多維的輸入一維化,常用在從卷積層到全連接層的過渡。以上是該架構的基本層級,更詳細的代碼及注釋請查看機器之心 GitHub 項目。

  下面是 Jasmeet BhaTIa 測評的具體情況。

  Keras 后端框架性能測試

  Keras 還能使開發(fā)人員快速測試使用不同深度學習框架作為 Keras 后端的相對性能。Keras 配置文件中有一個參數(shù)決定了使用哪一個深度學習框架作為后端,因此我們可以構建一個相同的模型在不同的深度學習框架(如 TensorFlow、CNTK、Theano)上直接運行。而對于 MXNet 來說,由于目前只支持 Keras ver1.2.2,所以我們需要對代碼做一點點修改就行。當然這個模型可以根據(jù)各個深度學習框架中的不同庫而進行微調以實現(xiàn)更好的性能,不過 Keras 仍然提供了很好的機會來比較這些基本庫之間的性能。

  早先已經有一些文章比較了 Keras 所支持后端框架的相對性能,但是對比的時間都比較早,且主要是以 TensorFlow 和 Theano 作為后端的對比。因此本文根據(jù) Keras 和深度學習框架的最新版本在更大的范圍內做了一次對比。

  我們首先了解一下用于測試的配置。所有的性能測試都在 Azure NC6 VM 上使用 Nvidia Tesla K80 GPU 執(zhí)行,使用的 VM 鏡像是 Ubuntu 上的 Azure DSVM(數(shù)據(jù)科學虛擬機)。除了其他數(shù)據(jù)科學工具,我們還預安裝了 Keras、TensorFlow、Theano 和 MXNet。對于測試來說,所有的軟件包都是用的最新版,但因為 MXNet 只支持 Keras 1.2.2,所以其使用的舊版。

  配置

  因為每一個深度學習框架的依賴項不同,我們的測試在下面三種配置中運行:

  

  

  性能測試

  為了比較 DL 框架不同的性能,我們如下所述使用了 5 種不同的測試模型。為了確保沒有特定的框架得到任何特定的處理,所有模型都來自 GitHub Keras/examples 倉庫中所維護的。

  模型源代碼地址:https://github.com/fchollet/keras/tree/master/examples

  測試的代碼可以在作者的 GitHub 項目中找到:https://github.com/jasmeetsb/deep-learning- keras-projects

  注意:有兩個測試 MXNet 并沒有參與,因為 MXNet 并不支持最新版的 Keras,且 MXNet 作為后端運行該模型需要調整大量代碼。在其他三個測試中以 MXNet 作為后端也需要進行一些細微的調整,主要是新版本的 Keras 重命名了一些函數(shù)。

  測試一:CIFAR-10 & CNN

  學習模型的類型:卷積神經網絡(CNN)

  數(shù)據(jù)集/任務:CIFAR-10 小圖片數(shù)據(jù)集

  目標:將圖片分類為 10 個類別

  根據(jù)每一個 epoch 的訓練速度,TensorFlow 要比 MXNet 快那么一點點。

  而按照準確度/收斂速度來說,CNTK 在前 25 個 epoch 中領先一點,而在 50 個 epoch 后,其他框架都到達相近的準確度,而 CNTK 卻略微下降。

  

  

  測試二:MNIST & CNN

  學習模型的類型:CNN

  數(shù)據(jù)集/任務:MNIST 手寫數(shù)字數(shù)據(jù)集

  目標:將圖片分類為 10 類手寫數(shù)字

  在該測試中,TensorFlow 明顯要在訓練時間上更加優(yōu)秀,但在準確度/收斂速度上所有框架都有相似的特征。

  

  

  測試三:MNIST&MLP

  學習模型的類型:多層感知機/深度神經網絡

  數(shù)據(jù)集/任務:MNIST 手寫數(shù)字數(shù)據(jù)集

  目標:將圖片分類為 10 類手寫數(shù)字

  在使用 MNIST 數(shù)據(jù)集執(zhí)行標準的神經網絡測試中,CNTK、TensorFlow 和 Theano 實現(xiàn)了相似的分數(shù)(2.5 – 2.7 s/epoch),而 MXNet 卻只需要 1.4s/epoch。此外,MXNet 同樣在準確度/收斂速度上有一點點優(yōu)勢。

  

  

  測試四:MNIST&RNN

  學習模型的類型:層級循環(huán)神經網絡(HRNN)

  數(shù)據(jù)集/任務:MNIST 手寫數(shù)字數(shù)據(jù)集

  目標:將圖片分類為 10 類手寫數(shù)字

  在訓練時間上,CNTK 和 MXNet 有相似的性能(162 – 164 s/epoch),TensorFlow 的時間為 179s/epoch,而 Theano 所需的時間則顯著地增多。

  

  

  測試五:BABI & RNN

  學習模型的類型:循環(huán)神經網絡(RNN)

  數(shù)據(jù)集/任務:bAbi Project (https://research.fb.com/downloads/babi/)

  目標:分別根據(jù)故事(story)和問題訓練兩個循環(huán)神經網絡,致使合并的向量可以回答一系列 bAbi 任務。

  該測試并沒有使用 MXNet,TensorFlow 和 Theano 在每一個 epoch 上要比 CNTK 要快了一倍多。

  

  

  

  TensorFlow 在 CNN 測試中表現(xiàn)都是最好的,但是在 RNN 測試中表現(xiàn)并不太好。

  CNTK 在 Babi RNN 和 MNIST RNN 測試上要比 TensorFlow 和 Theano 好得多,但是在 CNN 測試上要比 TensorFlow 差一些。

  MXNet 在 RNN 測試上要比 CNTK 和 TensorFlow 要好一點,此外它在 MLP 上要比所有框架的性能都要好。不過 MXNet 并不支持 Keras v2 函數(shù),所以我們并不能在沒有修正代碼的情況下直接測試,因此可能會有一點偏差。

  Theano 在深度神經網絡(MLP)中要比 TensorFlow 和 CNTK 好一點。

  結語

  從上面的結果可以看出來,所有的深度學習框架都有其擅長的領域,并沒有哪個框架一定要比其他框架好。CNTK 可作為 Keras 后端并用于 RNN 的使用案例,TensorFlow 可用于 CNN,而 MXNet 雖然顯示了性能上非常大的潛力,但仍然還是讓人期待其支持所有 Keras 函數(shù)的時候。在開源社區(qū)中,這些框架都在不斷擴展與增強,從而提供更好的性能并輕松地部署到產品中。在考慮使用這些深度學習框架投入生產時,性能是首要的。在大多數(shù)情況下,我們還需要考慮部署的難易度和其他輔助工具,它們都將幫助我們管理產品化的機器學習模型。最后,所有的框架性能都是在作為 Keras 后端時測評的,所以會有一點誤差,不過本文至少可以幫助大家對這些框架的性能有一定了解。

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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉