999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Tensorflow對卷積神經網絡的優化研究

2020-01-06 02:15:26郭敏鋼
計算機工程與應用 2020年1期
關鍵詞:模型

郭敏鋼,宮 鶴

1.吉林農業大學 信息技術學院,長春130118

2.吉林農業大學 吉林省智能環境工程研究中心,長春130118

3.吉林農業大學 吉林省農業物聯網科技協同創新中心,長春130118

1 引言

隨著深度學習[1]的不斷發展,目前的機器學習框架也是層出疊見,例如:Tensorflow[2]、Theano、Keras、Caffe、Torch、DeepLearning4J 等等。首選Tensorflow 作為研究機器學習框架的原因,是其在對比同類機器學習框架的可用性、靈活性、效率、支持等方面都有著優異的表現。

卷積神經網絡[3-5]作為一種廣泛的深度學習方法,在Google 研發的Alphago[6]以及圖像分類、視頻及聲音識別[7]、目標檢測[8-9]、醫學研究[10]等方面都取得了顯著的效果和極高的效率。

卷積神經網絡的優秀性能表現不僅需要像Tensorflow這樣的良好的深度學習框架支撐,還要依賴較為出色的計算設備支撐。隨著深度學習的不斷發展,卷積神經網絡計算模型的復雜度也隨之增加,使得模型訓練的難度及耗時呈指數倍增長,單CPU 或單GPU 設備甚至已經無法解決復雜網絡模型的訓練耗時問題。為此,本文提出了一種異構式CPU+GPU的協同計算模型,根據CPU邏輯運算強及GPU 費邏輯運算強的特點,將網絡模型計算任務按模塊分配到CPU 與GPU 設備上運行,通過耗時對比分析得出異構式CPU+GPU[11-12]的協同計算模型要明顯優于單CPU或單GPU計算模型。有效地提高了卷積神經網絡的訓練速度。

激活函數在卷積神經網絡中扮演著重要的角色,其作用是將神經元的輸入映射到輸出端,常見的激活函數包括Sigmoid、TanHyperbolic(Tanh)、ReLU、PReLU、Softplus、ELU、Softsign、Swish等。其中,早期的Sigmoid激活函數、TanHyperbolic(Tanh)激活函數、Softsign激活函數均為S型非線性飽和函數,在模型訓練中極易造成梯度消失現象。Krizhevsky 等人[4]提出的ReLU 激活函數由于在正向區間為線性函數,加快了模型訓練的收斂速度的同時也解決了Softsign、TanHyperbolic(Tanh)、Softsign 激活函數的梯度消失問題,但由于ReLU 激活函數在x <0 時梯度為0,這樣就導致負的梯度在這個ReLU被置零,容易造成“壞死”現象。在此之后,一些研究者相繼提出了ELU、PReLU、Swish等激活函數用來降低“壞死”現象出現的概率,但與此同時也產生了相應的梯度消失和收斂速度過慢的現象。

本文提出了一種新的激活函數ReLU-Swish。將ReLU激活函數和Swish激活函數的正負x 半軸進行分段組合,使Swish激活函數x 正半軸成為線性函數。在CIFAR-10 和MNIST 數據集上的實驗結果表明,ReLUSwish激活函數的準確率及收斂速度上相比Swish激活函數[13]表現更優秀,有效地緩解了“壞死”現象以及收斂速度過慢的問題,起到了優化卷積神經網絡的作用。

2 Tensorflow

2.1 Tensorflow架構與原理

Tensorflow 基本系統架構如圖1 所示,自下而上分別為設備管理和通信層、API 接口、計算圖層、應用層。通信層主要負責設備管理及通訊管理,主要負責卷積神經網絡中算法的計算和操作,可以實現CPU 與GPU 異構的特性,并依賴gRPC協議實現設備間的數據更新及傳輸;API 接口是對Tensorflow 各功能模塊的接口進行封裝,使其他平臺便于調用;計算圖層用于構建分布式子圖,切割計算任務分別運行在不同的設備(CPU、GPU)上;應用層通過API接口調用Tensorflow各種功能并且實現相關的設計和應用。

圖1 Tensorflow基本系統架構圖

2.2 Tensorflow的優勢

Tnsorflow是谷歌基于DistBelief研發的第二代人工智能學習系統,2017 年2 月,TensorFlow 1.0 版正式發布,其當年的提交數目就已超過2.1萬,其中還有部分外部貢獻者。同時,TensorFlow是跨平臺的,它幾乎可以運行在所有平臺上,比如GPU、CPU、移動和嵌入式平臺,甚至是張量處理單元(Tensor Processing Units,TPUs)。首選Tensorflow作為研究機器學習框架的原因,是其在對比同類機器學習框架的諸多方面都有著優異的表現。如表1所示為常見常用的4個機器學習開源框架在GitHub上各類屬性的評分及對比。

表1 主流深度學習框架評分

其優勢在于以下幾點。

(1)可用性:Tensorflow 相較于MXNet[14]、Caffe[15]、Theano[16]等框架工作流程相對容易,可直接寫Python/C++程序,節省了大量的編譯時間且能夠更快的測試相應的迭代想法;接口穩定,兼容性較好。

(2)靈活性:Tensorflow 可在各種不同類型的設備上運行,不論是嵌入式系統或者是計算機服務器都能夠很好的搭建相關環境。其分布式架構能夠降低大量的計算模型所消耗的時間,并且可以同時使用CPU+GPU進行運算。

(3)開源:深度學習是未來的新技術,并且研究方面是全球性的,Tensorflow 的目的是為了形成一個標準化的工具,同時也是最好用的深度學習工具庫之一,為用戶直接提供了一個更優質的學習環境。

3 異構式CPU+GPU

3.1 CPU、GPU現狀

隨著計算機科學技術的不斷發展和進步,眾多先進技術的應用對計算機的計算性能需求也在不斷攀升。近幾年來,雖然計算機硬件技術也在繼續發展,例如,Intel、IBM、AMD 等生產的通用CPU,采用多核集成的方式提高芯片計算能力,而非改善處理器主頻率來增強計算機性能的傳統概念。即便如此,很多技術采用了多核CPU 也無法滿足大多數算力的需求。因此,如何解決突破計算機算力瓶頸這一問題成為了眾多研究學者及生產業最為關注的問題。

伴隨著GPU 的相關技術架構的構建被提出,從而使得GPU 在計算機計算性能領域被廣泛推廣及發展。自1999 年到目前為止,GPU 的運算能力得到了飛躍式的提升,并且已經將GPU 的應用范圍不斷的拓展。例如:從圖形領域來看,醫學家借助GPU可以觀察到更細微的分子;軍事作戰指揮借助GPU 獲得真實度更高的模擬作戰演習環境;影視劇借助GPU 使得特效更加逼真。近些年來,更多的科學技術研究發現GPU 由于其硬件結構特點,在大量的高算力浮點吞吐運算環境中能夠起到非常重要的作用,因此,眾多領域已經逐漸開始使用GPU設備作為輔助設備。

3.2 異構式CPU+GPU協同計算

隨著深度學習的不斷拓展,卷積神經網絡計算模型的復雜度也隨之增加,數據計算量伴著卷積神經網絡層的增加以及參數的增多而增大,使得模型訓練的難度及耗時呈指數倍增長,單CPU 或單GPU 設備甚至已經無法解決復雜網絡模型的訓練耗時問題。

另一方面,不少研究人員針對耗時的問題也做了很多的工作,較為常見的方法例如:CPU 串行計算、GPU并行計算。值得肯定的是不論CPU串行計算或是GPU并行計算都能夠有效地解決復雜卷積神經網絡耗時較長的問題,但由于單一計算模型主要是將卷積神經網絡模型運算任務調度在CPU 或GPU 設備上進行計算,這樣容易使得部分設備(CPU 或GPU)處于空閑狀態,造成資源浪費,導致性耗比降低。

針對如何能夠使性耗比提升,提出了異構式CPU+GPU協同計算模型如圖2所示,在理論上講CPU與GPU兩者的相同點都有總線、緩存體系、數字和邏輯運算單元。但CPU 更適合處理邏輯控制密集的計算任務,例如:分布式計算、物理模擬、人工智能等計算步驟相對復雜的任務;而GPU適合處理數據密集的計算任務,例如:數據分析、數據處理、圖像處理等大量吞吐量設計的任務中。另一方面在SIMD Unit(Single Instruction Multiple Data,單指令多數據流,同步同指令)GPU性能要遠大于CPU,Threads線程數方面GPU也遠大于CPU。

圖2 異構式CPU+GPU計算模型

在這個模型中,CPU 與GPU 協同工作,各司其職。CPU 負責進行邏輯性強的事物處理和串行計算,GPU則專注于執行高度線程化的并行處理任務。

實驗步驟:編寫Tensorflow模型訓練應用程序,Client組件創建Session會話并通過序列化技術發送圖定義到Distributed Master組件,Distributed Master會根據定義好的三種訓練模型(單CPU、單GPU、異構式CPU+GPU)參數進行任務切割,并調度到指定設備。其中/job:worker/task:0負責模型的訓練和推理;/job:ps/task:0負責模型參數的存儲和更新,如圖3所示。

圖3 任務切割分配圖

圖4 異構式CPU+GPU計算模型與單CPU計算模型測試對比

圖5 異構式CPU+GPU計算模型與單GPU計算模型測試對比

三種訓練模型分配方法如下。單CPU:

with tf.device(’/cpu:0’):

w=tf.get_varibale(…)

b=tf.get_varibale(…)

with tf.device(’/cpu:0’):

ad=w+b mu=w*b

單GPU:

with tf.device(’/gpu:0’):

w=tf.get_varibale(…)

b=tf.get_varibale(…)

with tf.device(’/gpu:0’):

ad=w+b

mu=w*b

異構式CPU+GPU:

with tf.device(’/cpu:0’):

w=tf.get_varibale(…)

b=tf.get_varibale(…)

with tf.device(’/gpu:0’):

ad=w+b

mu=w*b

實驗測試:選用三臺相同型號及配置的服務器,其中一臺做測試服務器task1,另兩臺做對比測試服務器task2、task3,分別在三臺服務器上定義sever,并且在task1 上制定job_model1(異構式CUP+GPU 訓練模型),取兩次測試結果的平均值做實驗對比,在task2、task3上制定job_model2(單CPU、單GPU訓練模型),并取task2 與task3 測試結果的平均值做實驗對比,所得結果如圖4、5 所示。異構式CPU+GPU 計算模型兩次對比測試實驗結果分別為:133.132 362 883 237 8 s、134.860 072 175 262 76 s,而單CPU計算模型測試結果為:189.031 933 339 740 60 s、189.954 021 626 453 37 s;單GPU計算模型測試實現演過分別為:170.143 887 107 263 25 s、167.609 163 142 034 05 s。測試實驗結果的平均值如表2所示。

表2 單CPU、單GPU、異構式CPU+GPU測試實驗結果平均值

通過實驗結果分析可以看出,卷積神經網絡訓練模型的準確率幾乎并未改變,而在模型訓練耗時上異構式CPU+GPU 模型的時耗明顯低于單CPU 或單GPU 模型。同時由于改變了模型訓練的任務調度,使CPU 和GPU同時作業,有效地避免了設備閑置問題,從而在性耗比上得到了很好的提升,使卷積神經網絡在模型計算上得到了很好的優化。

4 ReLU-Swish激活函數

4.1 卷積神經網絡

卷積神經網絡(Convolutional Neural Network,CNN)通俗講是卷積結構的深度神經網絡,并且也是一種結構層級較多的監督型學習的神經網絡。在圖像分類、目標檢測、聲音識別等方面表現出了極高的效率,幾乎接近人類所能達到的認知標準和抽象的表達。卷積神經網絡雖然結構層級較多,但其占用的內存較少,網絡參數的個數也相對其他神經網絡相對較少,這樣便極大的緩解了神經網絡中過擬合的問題。

2012年,Krizhevsky等[4]提出的深度卷積神經網絡,總共包含8 層,其中有5 個卷積層和3 個全連接層,有60 M 個參數,神經元個數為650 k,分類數目為1 000,LRN層出現在第一個和第二個卷積層后面,最大池化層出現在兩個LRN 層及最后一個卷積層后。AlexNet 卷積神經網絡極大地減少了模型訓練時間,并使用線性ReLU激活函數加快訓練速度。

4.2 激活函數

不論是傳統的神經網絡模型還是當下熱門的深度學習,激活函數與神經網絡都密不可分,其作用是將神經元的輸入映射到輸出端。神經網絡中的每個神經元節點接受上一層神經元的輸出值作為原神經元的輸入值,并將輸入值傳遞給下一層,輸入層神經元節點將輸入屬性值直接傳遞給下一層(隱藏層或輸出層)。在上層節點的輸出和下層節點的輸入之間具有一個函數關系,這個函數稱為激活函數(又稱激勵函數)。常見的激活函數包括Sigmoid、TanHyperbolic(Tanh)、ReLU、PReLU、Softplus、ELU、Softsign、Swish等。

4.2.1 ReLU激活函數

線性整流函數(Rectified Linear Unit,ReLU)[17-18],又稱修正線性單元,如圖6所示。

圖6 ReLU激活函數

ReLU激活函數的優點:

(1)解決了在正區間梯度消失問題。

(2)計算速度非常快,只需要判斷輸入是否大于0,收斂速度遠快于Sigmoid 和Tanh(Sigmoid 和Tanh 的梯度在飽和區域變大非常平緩,接近于0,這就容易造成梯度消失,減緩收斂速度。而ReLU 的梯度是一個常數,有助于解決深度網絡的收斂問題)。

ReLU函數的缺點:

壞死,ReLU 強制的稀疏處理會減少模型的有效容量(即特征屏蔽太多,導致模型無法學習到有效特征)。由于ReLU在x <0 時梯度為0,這樣就導致負的梯度在這個ReLU被置零,而且這個神經元有可能再也不會被任何數據激活。

4.2.2 PReLU激活函數

PReLU(Parametric Rectified Linear Unit)如圖7所示,顧名思義為帶參數的ReLU。

圖7 PReLU激活函數

如果ai=0,那么PReLU退化為ReLU。

PReLU函數的優點:

相比ReLU 激活函數PReLU 激活函數只增加了極少量的參數,也就意味著網絡的計算量以及過擬合的危險性都只增加了一點點。特別的,當不同channels使用相同的ai時,參數就更少了。

在文獻[19]中,對比了PReLUu 激活函數和ReLU激活函數在ImageNet model A 的訓練效果,如8 所示,相對ReLU激活函數極大的降低了錯誤率。

PReLU激活函數的缺點:

PReLU激活函數雖然有負值存在,但是不能確保是一個噪聲穩定的去激活狀態。

圖8 PReLU與ReLU激活函數對比

4.2.3 ELU激活函數

指數線性單元(Exponential Linear Unit,ELU)[20]如圖9所示。

圖9 ELU激活函數

ELU激活函數函數的優點:

(1)ELU由于其正值特性,可以像ReLU激活函數,PReLU激活函數一樣緩解梯度消失問題,如圖10所示。

圖10 ReLU、ELU、PReLU激活函數

(2)相比ReLU 激活函數,ELU 與PReLU 一樣存在負值,可以將激活單元的輸出均值往0 推近,減少了計算量(輸出均值接近0可以減少偏移效應進而使梯度接近于自然梯度)。

(3)相比PReLU激活函數,ELU在有負值存在的時候是一個指數函數,對于輸入來說只定性不定量。

ElU激活函數函數的缺點:

雖然相對ReLU 激活函數降低了壞死率,在x <0時梯度不為0,保證了部分神經元仍然能夠被激活,但與PReLU激活函數相似,網絡的計算量以及過擬合的危險仍然很大。

4.2.4 Swish激活函數

Swish 也被稱為self-gated(自門控)激活函數如圖11 所示,由谷歌研究人員發布。Swish 的數學表達為:

圖11 Swish激活函數

Swish 函數的優點:自門控的優勢是它僅需要一個簡單的標量輸入,而正常的門控需要多個標量輸入。Swish激活函數的表現比ReLU更好,原因在于Swish激活函數在x 軸的負區域內末端的圖像形狀與ReLU、PReLU、ELU 激活函數是不同的,如圖12 所示,這是因為swich 激活函數即使輸入的值在增加,它的輸出也可以減少。大部分的激活函數都是單調的,即它們的輸出值在輸入增加的時候是不會減少的。Swish在0點具有單邊有界性,平滑且不單調。

圖12 ReLU、ELU、PReLU、Swish激活函數

谷歌測試證明,在AlexNet 上用MNIST 和Fashion-MNIST數據集對ReLU激活函數與Swish激活函數進行對比測試,結果如表3所示。

表3 Swish激活函數谷歌測試結果

在3、10、45 三種不同的全連接層上不斷地增加測試集的難度所得結果顯示,Swish 激活函數的測試結果明顯優于ReLU激活函數的測試結果。

但在收斂性上,Swish 激活函數較ReLU 激活函數卻相差很多。

4.2.5 ReLU-Swish激活函數

針對Swish 激活函數的特性提出的ReLU-Swish 激活函數由兩個分段函數組成,如圖13 所示,表達公式為:f

圖13 ReLU-Swish激活函數

ReLU-Swish激活函數與Swish激活函數對比,如圖14所示。

圖14 ReLU-Swish、Swish激活函數對比

ReLU-Swish在保持Swish原有特性的基礎上,一方面,是為了克服Swish激活函數在反向傳播求誤差梯度時涉及參數較多導致的計算量較大的問題,這樣就可以使得輸出運算節省大量的時間;另一方面,正是因為網絡模型在運算時往往需要大量的時間來處理大量的數據,模型的收斂速度成為了極為關鍵的因素。由于Swish 激活函數在模型收斂速度上不如ReLU 激活函數,因此將正區間上的這一段Swish 函數用ReLU 激活函數來替代,從而解決了Swish激活函數由于模型訓練運算中參數過多而導致的收斂速度過慢的問題。由于ReLU-Swish 激活函數與Swish 激活函數在特征性能方面保持著高度的相近性,并且ReLU激活函數在網絡模型結構層數較多時測試準確率較高的優勢,所以ReLUSwish激活函數在提高準確率及收斂效率上有著明顯的提高。

如圖15,16 所示,在測試中可以明顯得出ReLUSwish激活函數的收斂速度相較于Swish激活函數的收斂速度更快。在準確率上,在卷積核為10 的小型卷積神經網絡測試模型下,取3次CIFAR-10、MNIST訓練集訓練模型結果的平均accuracy 的結果如表4、5 所示,ReLU-Swish 激活函數的準確率為97.52%,而Swish 激活函數的準確率為96.7%,所以在準確率上ReLU-Swish激活函數也有所提升。

圖15 ReLU-Swish、Swish激活函數收斂性對比

圖16 ReLU-Swish、Swish激活函數準確率對比

表4 ReLU-Swish激活函數CIFAR-10、MNIST測試

表5 Swish激活函數CIFAR-10、MNIST測試

5 結束語

本文通過分析研究卷積神經網絡在性耗比上的不足,提出了一種異構式CPU+GPU 協同計算模型,在性耗比上比單CPU計算或單GPU計算的效果更優異。本文還通過分析研究Swish激活函數以及ReLU在卷積神經網絡中存在的問題,提出了一種新的ReLU-Swish 激活函數。經過測試實驗驗證了ReLU-Swish激活函數在收斂性及準確率上都有所提高,在模型訓練中表現的更優異,達到了很好的預期效果,同時也為卷積神經網絡的研究提供了一種新的方法及思路。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 久久久久久久蜜桃| 国产91成人| 亚洲综合日韩精品| 欧美午夜久久| 国产欧美日韩免费| 日韩精品毛片| 亚洲AV无码久久精品色欲| 亚洲无码久久久久| 婷婷午夜影院| 欧美yw精品日本国产精品| 欧美色99| 国产精品私拍99pans大尺度| 日韩资源站| 国产一级在线观看www色| 成人在线不卡视频| 亚洲欧美精品日韩欧美| 国产精品入口麻豆| 国产va免费精品观看| 91福利免费| 日韩精品高清自在线| 亚洲成年网站在线观看| 亚洲国产亚洲综合在线尤物| 呦系列视频一区二区三区| 伊人久久久久久久| 国产中文一区a级毛片视频 | 欧美成人aⅴ| 欧美中文字幕一区| 日韩在线第三页| 国产精品黑色丝袜的老师| vvvv98国产成人综合青青| 天堂成人av| 国产成人调教在线视频| 麻豆国产精品| 中文精品久久久久国产网址| 日韩小视频在线播放| 色婷婷亚洲综合五月| av一区二区三区高清久久| 久久综合色88| 国产精品视频a| 99热国产这里只有精品无卡顿"| 四虎国产精品永久在线网址| 中国精品久久| 精品久久久久久久久久久| 国产精品欧美激情| 国产免费羞羞视频| 欧美精品一二三区| 一本一道波多野结衣av黑人在线| 99久久精彩视频| 亚洲天堂区| 这里只有精品在线| 69视频国产| 视频二区中文无码| 国产伦片中文免费观看| 亚洲一级毛片免费观看| 成人福利在线看| 国产一区二区在线视频观看| 久草中文网| 亚洲无码电影| 在线毛片网站| 亚洲成人手机在线| 制服丝袜在线视频香蕉| 国产另类乱子伦精品免费女| 久久国语对白| 性欧美在线| 男女男免费视频网站国产| 亚洲狼网站狼狼鲁亚洲下载| 欧美精品v| 2020国产免费久久精品99| 午夜视频www| 国产香蕉在线视频| 欧美国产日韩一区二区三区精品影视| 亚洲三级成人| 国产99欧美精品久久精品久久| 亚洲AV无码一二区三区在线播放| 欧美色综合网站| 九九精品在线观看| 国内精品自在自线视频香蕉| 亚州AV秘 一区二区三区| 亚洲综合日韩精品| 午夜福利在线观看成人| 亚洲第一极品精品无码| 久久影院一区二区h|