91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

各深度學習框架之間性能差異比較分析

8g3K_AI_Thinker ? 2017-12-06 16:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

深度學習框架哪家強:TensorFlow?Caffe?MXNet?Keras?PyTorch?對于這幾大框架在運行各項深度任務時的性能差異如何,各位讀者不免會有所好奇。

微軟數據科學家Ilia Karmanov最新測試的結果顯示,亞馬遜MXNet在CNN、RNN與NLP情感分析任務上性能強勁,而TensorFlow僅擅長于特征提取。

項目內的測試代碼并非專門為深度學習性能而編寫,目的僅在于簡單比較一下各框架之間的性能差異。

以下為該項目詳情。

我們做這個榜單的初衷是為了好玩,所以省略了很多重要部分的比較。比如:幫助和支持,自定義圖層(可以創建一個膠囊網絡嗎?),數據加載器,調試,不同的平臺支持,分布式訓練等等。

我們不確定是否能對框架的整體性能提出任何建議,因為本項目主要還是在演示如何在不同的框架中創建相同的神經網絡

例如,使用Caffe2在Python中創建CNN,然后在Julia中使用KNet復制這個網絡,或者也可以在PyTorch中嘗試創建一個RNN并在Tensorflow中復制它。你可以在Chainer中進行一些特征提取,然后在CNTK中復制這個操作。

因為Microsoft Azure深度學習虛擬機NC6上的框架已經更新到了最新版本,所以notebooks代碼選擇在上面運行,僅占用了顯卡Nvidia K80 GPU一半的性能。

測試目標

創建深度學習框架的Rosetta Stone(譯者注:一個非常好用的外語學習軟件),使數據科學家能夠輕松地將他們的專業知識從一個框架轉移到另一個框架(通過翻譯,而不是從頭開始學習)。另外,是為了更加透明地在模型訓練時間和默認選項方面進行比較。

許多在線教程使用非常低級別的API,雖然這些API非常詳細,但對于大多數用例來說,并沒有多大意義,因為大多數時候有更高級別的幫助程序可用。在這里,我們直接忽略沖突的默認值的條件下,嘗試采用最高級別的API,以便在框架之間進行更容易的比較。

下面的結果將證明,一旦使用更高級的API,代碼結構變得非常相似,并且可以粗略地表示為:

加載數據; x_train,x_test,y_train,y_test = cifar_for_library(channel_first =?,one_hot =?)

生成CNN / RNN網絡結構(通常在最后一層上不激活)

指定損失函數(交叉熵與softmax是一起指定的),優化器并初始化網絡權重+會話

用mini-batch的方式來訓練訓練集并使用自定義迭代器(所有框架都使用公共的數據庫)

在測試集的mini-batch上面進行預測

計算準確率

本質上,我們是在比較一系列確定性的數學運算(盡管是隨機初始化),所以比較跨框架的準確性就是沒有意義了。相反,它會提示我們去檢查想要的匹配(?),以確保我們正在比較的是相同的模型架構。

測試結果

在CIFAR-10數據集上訓練CNN(VGG類型)網絡

性能對比- 圖像識別

該模型的輸入是標準的CIFAR-10數據集,包含五萬個訓練圖像和一萬個測試圖像,均勻分布在10個類別中。每個32×32像素的圖像轉化為張量的形式(3,32,32),像素值從0-255歸一化到0-1。 例如:汽車圖像的相關參數y=(0,1,0,0,0,0,0,0,0,0),其標簽是= [飛機,汽車,鳥,貓,鹿,狗,青蛙,馬,船 ,卡車]

在IMDB數據集上訓練RNN(GRU,門控循環單元)

性能對比 - 自然語言處理(情感分析)

這個模型的輸入是標準的IMDB電影評論數據集,包含兩萬五千個訓練評論和兩萬五千個測試評論,統一分為2個等級(正面/負面)。 下載的評論已經是單詞索引的張量形式,例如 (如果你喜歡像南方公園這樣的成人喜劇漫畫)將被表示為(1 2 3 4 5 6 3 7 8)。

遵循Keras框架的處理方法,其中起始字符被設置為1,詞匯外(使用3萬大小的詞匯庫)被表示為2,因此詞索引從3開始。通過零填充/截斷的方式,把每條評論都固定到150個字。

在可能的情況下,我會嘗試使用cudnn的方式來優化RNN(由CUDNN = True開關來控制),因為我們有一個可以輕易降低到CuDNN水平的簡單的RNN。例如,對于CNTK,我們使用optimized_rnnstack而不是Recurrence(LSTM())函數。 雖然它不太靈活,但是速度要快得多。

例如,對于CNTK,我們不能再使用類似層歸一化的更復雜的變量。在PyTorch中,這是默認啟用的。但是對于MXNet,我無法找到這樣的RNN函數,而是使用稍慢的Fused RNN函數。

Keras最近剛得到了cudnn的支持,但是只有Tensorflow后端可以使用(而不是CNTK后端)。 Tensorflow有許多RNN變種,其中包括他們自己定制的內核。這里有一個很好的基準,我將嘗試更新使用CudnnLSTM的樣例而不是當前的方法。

注:CNTK框架是支持動態軸,這意味著我們不需要將輸入填充到150個字,就可以按原樣輸入,但是由于我找不到與其他框架做到這一點的方法,所以我還是采用填充的方法。這樣對CNTK框架有點不公平,因為會低估了它的能力。

分類模型創建大小為(150x125)的嵌入矩陣,然后采用100個門控循環單元,并將最終輸出(不是輸出序列也不是隱藏狀態)作為輸出。

ResNet-50(特征提取)推斷性能對比

加載一個預訓練好的ResNet50模型并在avg_pooling結束后變成(7,7)向量處截斷,輸出一個2048維的向量。在這里可以插入一個softmax層或其它的分類器,例如用激勵樹來實現遷移學習。此處,在CPU和GPU上向avg_pool層進行前向傳遞的時間均計算在內。

我從中學到了什么?

關于CNN

以下提供了一些我在看到github上面提出的問題后比較跨框架的測試準確率時的一些見解。

1. 上面的例子(Keras除外),為了便于比較,嘗試使用相同級別的API,因此都使用相同的生成器函數。 對于MXNet和CNTK,我嘗試了一個更高級別的API,在這里我使用了框架的訓練生成器函數。在這個例子中,速度的提高是微不足道的,因為整個數據集都是作為NumPy數組加載到RAM中的,而且在處理的時候每個迭代的數據都是隨機的。我懷疑框架的生成器是異步執行隨機的。

奇怪的是,框架的隨機操作似乎是在一個批次層次上而不是在一個觀察層次上進行的,因此會略微降低測試精度(至少在10個迭代之后)。 對于我們會進行的輸入輸出活動以及可能在運行中進行預處理和數據增強的情況,自定義的生成器將對性能產生更大的影響。

2.讓CuDNN自動調整/窮舉搜索參數(能選擇最有效的CNN算法來固定圖像的大小)能在性能上帶來一個巨大的提升。Chainer,Caffe2,PyTorch和Theano這四個框架都必須手動啟動它。CNTK,MXNet和Tensorflow三個框架是默認啟用CuDNN的。

賈揚清提到了cudnnGet (默認)和cudnnFind之間性能的提升。然而,其在TitanX GPU上的差異小得多。

現在看來,在K80 +上采用的新的cudnn使其性能差異問題更為突出。由于在目標檢測各種圖像大小的組合上運行cudnnFind會出現較大的性能下降,所以窮舉搜索算法應該是不能在目標檢測的任務上使用了。

3.使用Keras時,選擇與后端框架相匹配的[NCHW]排序很重要。CNTK是channels first,我曾經在Keras上錯誤的配置為channels last。這樣就必須在每一個batch上改變它的順序,同時會造成性能嚴重的下降。通常,[NHWC]是大多數框架的默認設置(如Tensorflow),[NCHW]是在NVIDIA GPU上使用cuDNN訓練時可以使用的最佳順序。

4.Tensorflow,PyTorch,Caffe2和Theano四個框架都需要一個提供給dropout層的布爾值來指示我們是否訓練,因為這對在測試集上的準確率有很大的影響,72 vs 77%。因此,在這種情況下不應該使用Dropout來測試。

5.使用Tensorflow框架時需要兩個改變:通過啟用TF_ENABLE_WINOGRAD_NONFUSED,同時還改變提供給channel first而不是channel last的維度(data_format ='channels_first')。對卷積操作啟用WINOGRAD,自然而然的就將keras變成改成以TF作為后端。

6.Softmax層通常與cross_entropy_loss()函數一起用于大部分的功能,你需要檢查一下你是否要激活最終的全連接層,以節省使用兩次的時間。

7.不同框架的內核初始化器可能會有所不同,并且會對準確性有±1%的影響。我盡可能統一地指定xavier / glorot,而不要太冗長的內核初始化。

8.為了SGD-momentum中momentum類型的實現,我不得不關閉unit_gain。因為它在CNTK框架上是默認關閉,以此來跟其他框架的實現保持一致。

9.Caffe2對網絡的第一層(no_gradient_to_input = 1)進行了額外的優化,可以通過不計算輸入的梯度產生了一個比較小的速度提升。Tensorflow和MXNet可能已經默認啟用了此功能。 計算這個梯度對于研究和像deep-dream的網絡是有用的。

10.在max-pooling之后使用ReLU激活意味著你在減少維度之后才執行一個計算,從而能夠減少幾秒鐘。這可以使采用MXNet框架的運行時間縮短3秒。

11.一些可能有用的額外檢查:

是否指定的內核(3)變成了對稱元組(3,3)或1維卷積(3,1)?

步長(最大池化中的)是否是默認為(1,1)或等于內核(Keras這樣做的)?

默認填充通常是off(0,0)或valid,但檢查一下它不是on/'same'是很有用的

卷積層上默認的激活是否是'None'或'ReLu'的

Bias值的初始化可能不能(有時是沒有bias值)

梯度的下降和無窮大的值或 NaNs的處理可能因框架不同而不同

有些框架支持稀疏的標簽,而不是one-hot編碼類型的(例如我使用的Tensorflow有f.nn.sparse_softmax_cross_entropy_with_logits函數)

數據類型的假設可能是不同的-例如,我曾經試著用float32和int32類型來初始化X和Y。但是在torch中Y需要double類型(是為了可以使用在torch.LongTensor(y).cuda函數中)的數據

如果框架有一個稍微低級一點的API,請確保在測試過程中不要通過設置training= False來計算梯度。

12.據說安裝支持python3.5版本的Caffe2有點困難。因此我這里分享了一個腳本

關于RNN

1. 大多數框架(例如Tensorflow)上,都有多個RNN實現/內核; 一旦降低到cudnn LSTM / GRU級別,執行速度是最快的。但是,這種實現不太靈活(例如,可能希望層歸一化),并且接下來如果在CPU上運行推理可能會出現問題。

2.在cuDNN這個層面,大部分框架的運行時間是非常相似的。這個Nvidia的博客文章寫到過幾個有趣的用于循環神經網絡cuDNN優化的方法,例如,融合 - “將許多小矩陣的計算結合為大矩陣的計算,并盡可能地對計算進行流式處理,增加與內存I / O計算的比率,從而在GPU上獲得更好的性能。”

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 亞馬遜
    +關注

    關注

    8

    文章

    2694

    瀏覽量

    84656
  • 深度學習
    +關注

    關注

    73

    文章

    5561

    瀏覽量

    122781
  • tensorflow
    +關注

    關注

    13

    文章

    330

    瀏覽量

    61168

原文標題:深度學習框架哪家強?TensorFlow擅長推斷特征提取,MXNet稱霸CNN、RNN和情感分析

文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    京東中臺化底層支撐框架技術分析及隨想

    作者:京東零售 徐開廷 本文大約1.7萬字,閱讀需要13分鐘。 導讀:近幾年,除AIGC外,軟件領域相關比較大的變化,就是相關業務領域開始如火如荼地建設中臺和去中臺化了。本文不探討中臺對公司組織
    的頭像 發表于 04-08 11:29 ?261次閱讀
    京東中臺化底層支撐<b class='flag-5'>框架</b>技術<b class='flag-5'>分析</b>及隨想

    HarmonyOS NEXT 原生應用/元服務-DevEco Profiler性能問題定位深度錄制

    快照,分析單個內存快照或多個內存快照之間差異,定位ArkTS的內存問題。 CPU:通過深度采集CPU內核相關數據,直觀地呈現出當前選擇調優應用/元服務進程的CPU使用率、CPU
    發表于 02-24 16:06

    DLP4710與DLP4711在應用、驅動方案、引腳之間是否存在差異

    DLP4710與DLP4711在應用、驅動方案、引腳之間是否存在差異? 目前新設計的機器中,DLP4711可以正常點亮、DLP4710無法點亮。是否由于引腳功能不是相同的導致兩者間有差異
    發表于 02-17 06:36

    BP神經網絡與深度學習的關系

    BP神經網絡與深度學習之間存在著密切的關系,以下是對它們之間關系的介紹: 一、BP神經網絡的基本概念 BP神經網絡,即反向傳播神經網絡(Backpropagation Neural N
    的頭像 發表于 02-12 15:15 ?848次閱讀

    深度學習工作負載中GPU與LPU的主要差異

    ,一個新的競爭力量——LPU(Language Processing Unit,語言處理單元)已悄然登場,LPU專注于解決自然語言處理(NLP)任務中的順序性問題,是構建AI應用不可或缺的一環。 本文旨在探討深度學習工作負載中GPU與LPU的主要
    的頭像 發表于 12-09 11:01 ?3356次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>學習</b>工作負載中GPU與LPU的主要<b class='flag-5'>差異</b>

    JavaWeb框架比較

    JavaWeb框架為開發人員提供了構建Web應用程序所需的基礎設施和組件,每種框架都有其獨特的特點和適用場景。以下是對幾種主流JavaWeb框架比較: Spring MVC 優點
    的頭像 發表于 11-25 09:14 ?681次閱讀

    RNN與LSTM模型的比較分析

    RNN(循環神經網絡)與LSTM(長短期記憶網絡)模型在深度學習領域都具有處理序列數據的能力,但它們在結構、功能和應用上存在顯著的差異。以下是對RNN與LSTM模型的比較
    的頭像 發表于 11-15 10:05 ?2210次閱讀

    NPU在深度學習中的應用

    隨著人工智能技術的飛速發展,深度學習作為其核心驅動力之一,已經在眾多領域展現出了巨大的潛力和價值。NPU(Neural Processing Unit,神經網絡處理單元)是專門為深度學習
    的頭像 發表于 11-14 15:17 ?1898次閱讀

    pcie在深度學習中的應用

    深度學習模型通常需要大量的數據和強大的計算能力來訓練。傳統的CPU計算資源有限,難以滿足深度學習的需求。因此,GPU(圖形處理單元)和TPU(張量處理單元)等專用硬件應運而生,它們通過
    的頭像 發表于 11-13 10:39 ?1338次閱讀

    GPU深度學習應用案例

    GPU在深度學習中的應用廣泛且重要,以下是一些GPU深度學習應用案例: 一、圖像識別 圖像識別是深度學習
    的頭像 發表于 10-27 11:13 ?1339次閱讀

    AI大模型與深度學習的關系

    AI大模型與深度學習之間存在著密不可分的關系,它們互為促進,相輔相成。以下是對兩者關系的介紹: 一、深度學習是AI大模型的基礎 技術支撐 :
    的頭像 發表于 10-23 15:25 ?2874次閱讀

    FPGA做深度學習能走多遠?

    電子領域,FPGA 可能需要在性能、成本和功耗之間進行更精細的平衡,以滿足市場需求。 ? 市場競爭:隨著深度學習市場的不斷發展,其他技術(如 GPU、ASIC 等)也在不斷進步和競爭。
    發表于 09-27 20:53

    NVIDIA推出全新深度學習框架fVDB

    在 SIGGRAPH 上推出的全新深度學習框架可用于打造自動駕駛汽車、氣候科學和智慧城市的 AI 就緒型虛擬表示。
    的頭像 發表于 08-01 14:31 ?1139次閱讀

    PyTorch深度學習開發環境搭建指南

    PyTorch作為一種流行的深度學習框架,其開發環境的搭建對于深度學習研究者和開發者來說至關重要。在Windows操作系統上搭建PyTorc
    的頭像 發表于 07-16 18:29 ?2502次閱讀

    開關柜和環網柜之間有哪什么差異

    開關柜、環網柜之間差異分析
    的頭像 發表于 07-16 15:37 ?1253次閱讀
    開關柜和環網柜<b class='flag-5'>之間</b>有哪什么<b class='flag-5'>差異</b>?
    主站蜘蛛池模板: 老色批| 久久青草免费91观看 | 老色皮永久免费网站 | 88xx成人永久免费观看 | 黄网站色成年片大免费软件 | bt天堂资源| 亚洲一区二区三区四 | 国产精品九九久久一区hh | 在线免费看一级片 | 国产精品久久久久影院色老大 | 久久ww| 亚洲 另类色区 欧美日韩 | 在线天堂在线 | 国漫在线观看 | 欧美精品一区二区三区视频 | 美女扒开尿口给男人爽的视频 | 天天爽天天色 | 七月色婷婷 | 日韩精品午夜 | 伊人久久大香线蕉电影院 | 美女视频黄的免费视频网页 | 永久手机看片福利盒子 | 深爱五月综合网 | 国产精品夜色7777青苹果 | 久久六月丁香婷婷婷 | 免看一级a一片成人123 | 国产免费黄视频 | 色色色色色色色色色色色色 | 婷婷在线五月 | 天天操人人爱 | 成人黄色三级 | 色综合成人丁香 | 国产一级真人毛爱做毛片 | 亚洲一区中文字幕在线 | 国产乱码精品一区二区 | 国产成人mv在线观看入口视频 | aa小视频| 欧美综合精品一区二区三区 | 欧美一级一一特黄 | 你懂的视频在线看 | 男人的亚洲天堂 |