版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章卷積神經(jīng)網(wǎng)絡(luò)計(jì)算機(jī)視覺(jué)開(kāi)發(fā)凌明勝常州信息職業(yè)技術(shù)學(xué)院010203全連接神經(jīng)網(wǎng)絡(luò)VS卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)卷積目錄CONTENTS04池化05LeNet-5網(wǎng)絡(luò)構(gòu)建06BatchNorm層07常見(jiàn)卷積神經(jīng)網(wǎng)絡(luò)模型08實(shí)戰(zhàn):花朵識(shí)別全連接神經(jīng)網(wǎng)絡(luò)VS卷積神經(jīng)網(wǎng)絡(luò)01第5章 卷積神經(jīng)網(wǎng)絡(luò)5.1.1全連接神經(jīng)網(wǎng)絡(luò)處理圖像的不足參數(shù)數(shù)量太多如果輸入是一張大小為1000×1000像素的圖片,對(duì)全連接神經(jīng)網(wǎng)絡(luò)而言,輸入層有1000×1000=100萬(wàn)個(gè)節(jié)點(diǎn),假設(shè)第一個(gè)隱藏層有100個(gè)節(jié)點(diǎn),那么僅這一層就有(1000×1000+1)×100=1億個(gè)參數(shù)。當(dāng)圖像只擴(kuò)大一點(diǎn),參數(shù)數(shù)量就會(huì)多很多,因此它的擴(kuò)展性很差。沒(méi)有利用像素之間的位置信息對(duì)于圖像識(shí)別任務(wù)來(lái)說(shuō),每個(gè)像素和其周?chē)袼氐穆?lián)系是比較緊密的,和離得很遠(yuǎn)的像素的聯(lián)系可能就很小了。如果一個(gè)神經(jīng)元和上一層所有神經(jīng)元相連,那么就相當(dāng)于對(duì)于一個(gè)像素來(lái)說(shuō),把圖像的所有像素都等同看待,這不符合前面的假設(shè)。當(dāng)完成每個(gè)連接權(quán)重的學(xué)習(xí)之后,最終可能會(huì)發(fā)現(xiàn),有大量的權(quán)重,它們的值都是很小的(也就是這些連接其實(shí)無(wú)關(guān)緊要)。努力學(xué)習(xí)大量并不重要的權(quán)重,這樣的學(xué)習(xí)必將是非常低效的。5.1.1全連接神經(jīng)網(wǎng)絡(luò)處理圖像的不足網(wǎng)絡(luò)層數(shù)限制網(wǎng)絡(luò)層數(shù)越多其表達(dá)能力越強(qiáng),但是通過(guò)梯度下降方法訓(xùn)練深度全連接神經(jīng)網(wǎng)絡(luò)很困難,因?yàn)槿B接神經(jīng)網(wǎng)絡(luò)的梯度很難傳遞超過(guò)3層。因此,我們不可能得到一個(gè)很深的全連接神經(jīng)網(wǎng)絡(luò),也就限制了它的能力。5.1.1全連接神經(jīng)網(wǎng)絡(luò)處理圖像的不足畫(huà)面不變性圖所示兩張圖片,在全連接神經(jīng)網(wǎng)絡(luò)中,圓形的位置不同就會(huì)產(chǎn)生完全不同的數(shù)據(jù)表達(dá)。但是從圖像的角度來(lái)看,圖像的內(nèi)容(本質(zhì))并沒(méi)有發(fā)生變化,只是位置發(fā)生了變化。5.1.1全連接神經(jīng)網(wǎng)絡(luò)處理圖像的不足歡迎提問(wèn)下次再見(jiàn)5.1.1全連接神經(jīng)網(wǎng)絡(luò)處理圖像的不足全連接神經(jīng)網(wǎng)絡(luò)VS卷積神經(jīng)網(wǎng)絡(luò)01第5章 卷積神經(jīng)網(wǎng)絡(luò)5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法貓視覺(jué)皮層實(shí)驗(yàn)5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法相比于全連接神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)中每個(gè)神經(jīng)元不再和上一層的所有神經(jīng)元相連,而只和一小部分神經(jīng)元相連,這樣就減少了很多參數(shù)。對(duì)于一張大小為1000×1000的輸入圖像而言,采用局部連接,如果第一個(gè)隱藏層的每個(gè)神經(jīng)元僅與圖像中4×4的局部區(qū)域相連接,那么此時(shí)的權(quán)值參數(shù)數(shù)量為4×4×100=1600,與全連接相比,參數(shù)個(gè)數(shù)直接減少幾個(gè)數(shù)量級(jí)。局部連接如果一組權(quán)值可以在圖像中某個(gè)區(qū)域提取出有效的表示,那么它們也能在圖像的另外區(qū)域中提取出相同有效的表示。在卷積神經(jīng)網(wǎng)絡(luò)中,卷積層中的卷積核(或稱(chēng)之為濾波器)類(lèi)似于一個(gè)滑動(dòng)窗口,在整個(gè)輸入圖像中以特定的步長(zhǎng)來(lái)回滑動(dòng),經(jīng)過(guò)卷積運(yùn)算之后,從而得到輸入圖像的特征圖,這個(gè)特征圖就是卷積層提取出來(lái)的局部特征,而這個(gè)卷積核是共享參數(shù)的。5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法權(quán)值共享降采樣把一張圖片的奇數(shù)行,偶數(shù)列的pixel拿掉,變成原來(lái)十分之一的大小,它其實(shí)不會(huì)影響人對(duì)這張圖片的理解。如上圖所示,縮小后的圖片跟原圖片看起來(lái)可能沒(méi)有太大的差別。我們可以用這樣的概念把圖片變小,從而減少參數(shù)數(shù)量。對(duì)于圖像識(shí)別任務(wù)來(lái)說(shuō),卷積神經(jīng)網(wǎng)絡(luò)通過(guò)盡可能保留重要的參數(shù),去掉大量不重要的參數(shù),來(lái)達(dá)到更好的學(xué)習(xí)效果。5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法歡迎提問(wèn)下次再見(jiàn)5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法全連接神經(jīng)網(wǎng)絡(luò)VS卷積神經(jīng)網(wǎng)絡(luò)01第5章 卷積神經(jīng)網(wǎng)絡(luò)5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法貓腦視覺(jué)皮層實(shí)驗(yàn)5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法相比于全連接神經(jīng)網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)中每個(gè)神經(jīng)元不再和上一層的所有神經(jīng)元相連,而只和一小部分神經(jīng)元相連,這樣就減少了很多參數(shù)。對(duì)于一張大小為1000×1000的輸入圖像而言,采用局部連接,如果第一個(gè)隱藏層的每個(gè)神經(jīng)元僅與圖像中4×4的局部區(qū)域相連接,那么此時(shí)的權(quán)值參數(shù)數(shù)量為4×4×100=1600,與全連接相比,參數(shù)個(gè)數(shù)直接減少幾個(gè)數(shù)量級(jí)。局部連接如果一組權(quán)值可以在圖像中某個(gè)區(qū)域提取出有效的表示,那么它們也能在圖像的另外區(qū)域中提取出相同有效的表示。在卷積神經(jīng)網(wǎng)絡(luò)中,卷積層中的卷積核(或稱(chēng)之為濾波器)類(lèi)似于一個(gè)滑動(dòng)窗口,在整個(gè)輸入圖像中以特定的步長(zhǎng)來(lái)回滑動(dòng),經(jīng)過(guò)卷積運(yùn)算之后,從而得到輸入圖像的特征圖,這個(gè)特征圖就是卷積層提取出來(lái)的局部特征,而這個(gè)卷積核是共享參數(shù)的。5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法權(quán)值共享降采樣把一張圖片的奇數(shù)行,偶數(shù)列的pixel拿掉,變成原來(lái)十分之一的大小,它其實(shí)不會(huì)影響人對(duì)這張圖片的理解。如上圖所示,縮小后的圖片跟原圖片看起來(lái)可能沒(méi)有太大的差別。我們可以用這樣的概念把圖片變小,從而減少參數(shù)數(shù)量。對(duì)于圖像識(shí)別任務(wù)來(lái)說(shuō),卷積神經(jīng)網(wǎng)絡(luò)通過(guò)盡可能保留重要的參數(shù),去掉大量不重要的參數(shù),來(lái)達(dá)到更好的學(xué)習(xí)效果。5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法歡迎提問(wèn)下次再見(jiàn)5.1.2卷積神經(jīng)網(wǎng)絡(luò)解決辦法卷積02第5章 卷積神經(jīng)網(wǎng)絡(luò)5.2.1卷積計(jì)算將大小為3×3的模板(卷積核)左上角與8*8圖片左上角對(duì)齊并“蓋”在上面,將兩張圖相重疊的3×3區(qū)域中的9個(gè)對(duì)應(yīng)元素相乘,然后求和。再將模板向右移動(dòng)一列,繼續(xù)將重疊的3×3區(qū)域中9個(gè)對(duì)應(yīng)元素相乘并求和。移動(dòng)到最右端后下移一行,從左到右重復(fù)上述操作,直至把8*8圖片每一個(gè)角落都覆蓋到為止,總共可以覆蓋6×6個(gè)不同的區(qū)域。將這6×6個(gè)區(qū)域的計(jì)算的結(jié)果,拼成一個(gè)矩陣,最終得到一張6×6的圖片。5.2.1卷積計(jì)算5.2.1卷積計(jì)算5.2.1卷積計(jì)算5.2.1卷積計(jì)算卷積計(jì)算后存在什么樣的問(wèn)題?卷積過(guò)程中的“邊界效應(yīng)”,這樣會(huì)帶來(lái)兩個(gè)問(wèn)題:每次卷積,圖像都縮小,這樣卷不了幾次就沒(méi)了;相比于圖片中間的點(diǎn),圖片邊緣的點(diǎn)在卷積中被計(jì)算的次數(shù)很少。這樣的話(huà),邊緣的信息就易于丟失。5.2.1卷積計(jì)算卷積計(jì)算,主要兩步,點(diǎn)積(上圖中第一步的計(jì)算)和滑動(dòng)(上圖中“龍卷風(fēng)”往右移動(dòng)一個(gè)位置)。歡迎提問(wèn)下次再見(jiàn)5.2.1卷積計(jì)算卷積02第5章 卷積神經(jīng)網(wǎng)絡(luò)5.2.2填充在每次卷積前,先給圖片周?chē)佳a(bǔ)上適當(dāng)數(shù)量的空白行和空白列,使得每個(gè)輸入塊都能作為卷積窗口的中心,然后卷積運(yùn)算之后,輸出特征圖的維度將會(huì)與輸入維度保持一致,同時(shí),原來(lái)的邊緣也被計(jì)算了更多次。5.2.2填充卷積三種計(jì)算方式:valid:卷積核完全在信號(hào)內(nèi);same:卷積核中心在信號(hào)內(nèi);full:卷積核邊沿在信號(hào)內(nèi)。5.2.2填充卷積神經(jīng)網(wǎng)絡(luò)中最常用的填充方式是零值填充,但填充并不一定存在于每個(gè)卷積網(wǎng)絡(luò)中,它是一個(gè)可選操作。為什么選擇零值填充?0在權(quán)重乘積和運(yùn)算中對(duì)最終結(jié)果不造成影響,也就避免了圖片中增加額外的干擾信息5.2.2填充
5.2.2填充
5.2.2填充P應(yīng)該為多大?
歡迎提問(wèn)下次再見(jiàn)5.2.2填充卷積02第5章 卷積神經(jīng)網(wǎng)絡(luò)5.2.3步長(zhǎng)卷積核可以按照指定的間隔移動(dòng)進(jìn)行卷積操作,這個(gè)間隔就是步長(zhǎng)。
5.2.3步長(zhǎng)向下取整。??這是向下取整的符號(hào),如同Python的地板除,向下取整到最近的整數(shù)。這個(gè)原則實(shí)現(xiàn)的方式是,只在卷積核完全包括在圖像或填充完的圖像內(nèi)部時(shí),才對(duì)它進(jìn)行運(yùn)算。如果有任意一個(gè)卷積核移動(dòng)到了外面,那就不要進(jìn)行相乘操作。如果商不為整數(shù)?
歡迎提問(wèn)下次再見(jiàn)5.2.3步長(zhǎng)卷積02第5章 卷積神經(jīng)網(wǎng)絡(luò)5.2.4多通道卷積圖片的普遍表達(dá)方式是有3個(gè)通道(channels)的RGB彩色圖像。多個(gè)通道情況下,如何計(jì)算卷積呢?5.2.4多通道卷積當(dāng)輸入有多個(gè)通道時(shí),需要擁有相同通道數(shù)的卷積核進(jìn)行卷積操作5.2.4多通道卷積每個(gè)卷積核的通道與輸入層的對(duì)應(yīng)通道進(jìn)行卷積將每個(gè)通道的卷積結(jié)果按位相加得到最終的特征圖5.2.4多通道卷積歡迎提問(wèn)下次再見(jiàn)5.2.4多通道卷積卷積02第5章 卷積神經(jīng)網(wǎng)絡(luò)5.2.5多卷積核卷積多個(gè)卷積核情況下,如何計(jì)算卷積呢?每個(gè)卷積核可以抓取探測(cè)特定的特征,當(dāng)有多個(gè)卷積核時(shí),可以學(xué)習(xí)到多種不同的特征學(xué)習(xí)到多種不同的特征,對(duì)應(yīng)產(chǎn)生包含多個(gè)通道的特征圖5.2.5多卷積核卷積5.2.5多卷積核卷積
5.2.5多卷積核卷積歡迎提問(wèn)下次再見(jiàn)5.2.5多卷積核卷積卷積02第5章 卷積神經(jīng)網(wǎng)絡(luò)5.2.6tf.keras卷積實(shí)現(xiàn)tf.keras.layers.Conv2D()類(lèi)來(lái)構(gòu)建卷積層tf.keras.layers.Conv2D(filters,kernel_size,strides=(1,1),padding='valid',data_format=None,dilation_rate=(1,1),activation=None)filter:卷積核的個(gè)數(shù)kenel_size:卷積核尺寸,如果是正方形,則用一個(gè)整數(shù)表示;如果是長(zhǎng)方形,則需要明確指明高用h表示,寬用w表示,可以用元組或者列表的形式表示兩者(如:[h,w]或者{h,w})strides:滑動(dòng)步長(zhǎng),默認(rèn)橫縱向滑動(dòng)步長(zhǎng)均為1(1,1),也可以設(shè)置其他步長(zhǎng)(縱向步長(zhǎng),橫向步長(zhǎng))padding:補(bǔ)零策略,當(dāng)padding='same’時(shí),全零填充,當(dāng)padding=‘valid’,則不填充activaton:激活函數(shù),相當(dāng)于經(jīng)過(guò)卷積輸出后,再經(jīng)過(guò)一次激活函數(shù)(常見(jiàn)的激活函數(shù)有relu,softmax,selu)5.2.6tf.keras卷積實(shí)現(xiàn)64個(gè)大小為1*1的卷積核,執(zhí)行步長(zhǎng)為1、無(wú)填充卷積操作。importtensorflowastffromtensorflowimportkerasfromtensorflow.kerasimportlayers#輸入圖像為(600,600)彩色圖像input=layers.Input(shape=(600,600,3))#卷積核個(gè)數(shù)為64,大小為1*1,步長(zhǎng)為1,默認(rèn)不填充x=layers.Conv2D(64,(1,1),strides=(1,1),name='conv1')(input)x代碼執(zhí)行結(jié)果為:<KerasTensor:shape=(None,600,600,64)dtype=float32(createdbylayer'conv1')>生成特征圖的個(gè)數(shù)如卷積核數(shù)量相等5.2.6tf.keras卷積實(shí)現(xiàn)64個(gè)大小為2*2的卷積核,執(zhí)行步長(zhǎng)為1、無(wú)填充卷積操作。importtensorflowastffromtensorflowimportkerasfromtensorflow.kerasimportlayers#輸入圖像為(600,600)彩色圖像input=layers.Input(shape=(600,600,3))#卷積核個(gè)數(shù)為64,大小為1*1,步長(zhǎng)為1,默認(rèn)不填充x=layers.Conv2D(64,(2,2),strides=(1,1),name='conv2')(input)x代碼執(zhí)行結(jié)果為:<KerasTensor:shape=(None,599,599,64)dtype=float32(createdbylayer'conv2')>卷積核尺寸從1*1調(diào)整到2*2,卷積操作后特征圖的尺寸由(600,600)縮小為(599,599)5.2.6tf.keras卷積實(shí)現(xiàn)64個(gè)大小為2*2的卷積核,執(zhí)行步長(zhǎng)為1、全零same填充卷積操作。importtensorflowastffromtensorflowimportkerasfromtensorflow.kerasimportlayers#輸入圖像為(600,600)彩色圖像input=layers.Input(shape=(600,600,3))#卷積核個(gè)數(shù)為64,大小為2*2,步長(zhǎng)為1,全零same填充x=layers.Conv2D(64,(2,2),strides=(1,1),padding='same’,name='conv3')(input)x代碼執(zhí)行結(jié)果為:<KerasTensor:shape=(None,600,600,64)dtype=float32(createdbylayer'conv3')>進(jìn)行了全零same填充,卷積操作后特征圖的尺寸保持不變5.2.6tf.keras卷積實(shí)現(xiàn)64個(gè)大小為2*2的卷積核,執(zhí)行步長(zhǎng)為2、全零same填充卷積操作。importtensorflowastffromtensorflowimportkerasfromtensorflow.kerasimportlayers#輸入圖像為(600,600)彩色圖像input=layers.Input(shape=(600,600,3))#卷積核個(gè)數(shù)為64,大小為2*2,步長(zhǎng)為2,全零same填充x=layers.Conv2D(64,(2,2),strides=(2,2),padding='same’,name='conv4')(input)x代碼執(zhí)行結(jié)果為:<KerasTensor:shape=(None,300,300,64)dtype=float32(createdbylayer'conv4')>步長(zhǎng)從1調(diào)整到2,卷積操作后特征圖的尺寸由(600,600)縮小為(300,300)歡迎提問(wèn)下次再見(jiàn)5.2.6tf.keras卷積實(shí)現(xiàn)池化03第5章 卷積神經(jīng)網(wǎng)絡(luò)
通過(guò)卷積層獲取到了圖像的某些特征。接下來(lái)有兩個(gè)選擇:直接應(yīng)用所有獲取的特征數(shù)據(jù)來(lái)參與訓(xùn)練
這在理論上是可行的,但缺點(diǎn)在于計(jì)算量很大,很可能無(wú)法實(shí)現(xiàn)或者需要很長(zhǎng)的時(shí)間進(jìn)
行訓(xùn)練,而且參數(shù)量過(guò)大容
易出現(xiàn)過(guò)擬合現(xiàn)象。2.降低數(shù)據(jù)量為了有效地減少計(jì)算量,CNN引入池化(Pooling)操作。池化就是將輸入圖像進(jìn)行縮小,減少像素信息,只保留重要信息。簡(jiǎn)單理解就是將一張分辨率較高的圖片轉(zhuǎn)化為分辨率較低的圖片。池化的核心作用就是降低數(shù)據(jù)的空間尺寸,以節(jié)省計(jì)算資源并防止過(guò)擬合的現(xiàn)象。5.3.1池化操作5.3.1池化操作最大池化計(jì)算一個(gè)局部區(qū)域的最大值作為輸出,而平均池化計(jì)算一個(gè)局部區(qū)域的均值作為輸出。5.3.1池化操作5.3.1池化操作5.3.1池化操作5.3.1池化操作5.3.1池化操作5.3.1池化操作池化三點(diǎn)作用:增加特征平移不變性。池化操作使模型更關(guān)注是否存在某種特征而不是特征的具體位置。可以提高網(wǎng)絡(luò)對(duì)特征微小位移的容忍能力。減小特征圖大小。池化層對(duì)空間局部區(qū)域進(jìn)行下采樣,相當(dāng)于在空間范圍內(nèi)做了維度約減,從而使模型可以抽取更廣泛的特征,同時(shí)使下一層需要的參數(shù)量和計(jì)算量減少,提高了算法的運(yùn)算效率并降低過(guò)擬合風(fēng)險(xiǎn)。最大池化可以帶來(lái)非線(xiàn)性。這是目前最大池化更常用的原因之一。由于池化可以對(duì)圖像數(shù)據(jù)降維,所以它總是出現(xiàn)在卷積之后,即卷積,池化交替進(jìn)行,在提取特征的同時(shí)也在對(duì)數(shù)據(jù)降維。歡迎提問(wèn)下次再見(jiàn)5.3.1池化操作池化03第5章 卷積神經(jīng)網(wǎng)絡(luò)5.3.2tf.keras池化操作實(shí)現(xiàn)最大池化:tf.keras.layers.MaxPooling2D()類(lèi)tf.keras.layers.MaxPooling2D(
pool_size=(2,2),
strides=None,
padding='valid',
data_format=None,
**kwargs
)平均池化:tf.keras.layers.AveragePooling2D()類(lèi)tf.keras.layers.AveragePooling2D(
pool_size=(2,2),
strides=None,
padding='valid',
data_format=None,
**kwargs
)pool_size:指定池化窗口的大小。strides:池化窗口移動(dòng)步長(zhǎng)padding:字符串,"valid"或者"same"5.3.2tf.keras池化操作實(shí)現(xiàn)窗口大小2*2,步長(zhǎng)為1、無(wú)填充池化操作importtensorflowastffromtensorflowimportkerasfromtensorflow.kerasimportlayers
#構(gòu)造輸入形狀為3*3的張量x=tf.constant([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]])#調(diào)整輸入維度為(1,3,3,1)x=tf.reshape(x,[1,3,3,1])#執(zhí)行窗口大小為2*2,步長(zhǎng)為1,無(wú)填充的平均池化操作avg_pool_2d=layers.AveragePooling2D(pool_size=(2,2),strides=(1,1),padding='valid')#執(zhí)行窗口大小為2*2,步長(zhǎng)為1,無(wú)填充的最大池化操作max_pool_2d=layers.MaxPooling2D(pool_size=(2,2),strides=(1,1),padding='valid')print(avg_pool_2d(x))print(max_pool_2d(x))tf.Tensor([[[[3.][4.]][[6.][7.]]]],shape=(1,2,2,1),dtype=float32)tf.Tensor([[[[5.][6.]][[8.][9.]]]],shape=(1,2,2,1),dtype=float32)池化操作后維度變小5.3.2tf.keras池化操作實(shí)現(xiàn)窗口大小2*2,步長(zhǎng)為2、無(wú)填充池化操作池化操作后維度進(jìn)一步變小importtensorflowastffromtensorflowimportkerasfromtensorflow.kerasimportlayers
#構(gòu)造輸入形狀為3*3的張量x=tf.constant([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]])#調(diào)整輸入維度為(1,3,3,1)x=tf.reshape(x,[1,3,3,1])#執(zhí)行窗口大小為2*2,步長(zhǎng)為2,無(wú)填充的平均池化操作avg_pool_2d=layers.AveragePooling2D(pool_size=(2,2),strides=(2,2),padding='valid')#執(zhí)行窗口大小為2*2,步長(zhǎng)為2,無(wú)填充的最大池化操作max_pool_2d=layers.MaxPooling2D(pool_size=(2,2),strides=(2,2),padding='valid')print(avg_pool_2d(x))print(max_pool_2d(x))tf.Tensor([[[[3.]]]],shape=(1,1,1,1),dtype=float32)tf.Tensor([[[[5.]]]],shape=(1,1,1,1),dtype=float32)5.3.2tf.keras池化操作實(shí)現(xiàn)窗口大小2*2,步長(zhǎng)為1、same填充池化操作池化操作后維度不變importtensorflowastffromtensorflowimportkerasfromtensorflow.kerasimportlayers
#構(gòu)造輸入形狀為3*3的張量x=tf.constant([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]])#調(diào)整輸入維度為(1,3,3,1)x=tf.reshape(x,[1,3,3,1])#執(zhí)行窗口大小為2*2,步長(zhǎng)為1,same填充的平均池化操作avg_pool_2d=layers.AveragePooling2D(pool_size=(2,2),strides=(1,1),padding='same')#執(zhí)行窗口大小為2*2,步長(zhǎng)為1,無(wú)填充的最大池化操作max_pool_2d=layers.MaxPooling2D(pool_size=(2,2),strides=(1,1),padding='same')print(avg_pool_2d(x))print(max_pool_2d(x))tf.Tensor([[[[3.][4.][4.5]][[6.][7.][7.5]][[7.5][8.5][9.]]]],shape=(1,3,3,1),dtype=float32)tf.Tensor([[[[5.][6.][6.]][[8.][9.][9.]][[8.][9.][9.]]]],shape=(1,3,3,1),dtype=float32)歡迎提問(wèn)下次再見(jiàn)5.3.2tf.keras池化操作實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)04第5章 卷積神經(jīng)網(wǎng)絡(luò)5.4卷積神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)輸入層卷積層:提取圖像中的局部特征池化層:大幅降低參數(shù)量級(jí)(降維)全連接層:類(lèi)似人工神經(jīng)網(wǎng)絡(luò)的部分,用來(lái)輸出想要的結(jié)果輸入層對(duì)輸入數(shù)據(jù)進(jìn)行預(yù)處理操作去均值。這是最常見(jiàn)數(shù)據(jù)預(yù)處理方法。通過(guò)將待訓(xùn)練的每一張圖片的特征減去全部訓(xùn)練集圖片的特征均值,達(dá)到輸出數(shù)據(jù)各個(gè)維度都中心化為零。去均值可以減小計(jì)算量。歸一化。歸一化的目的是使得預(yù)處理的數(shù)據(jù)被限定在一定的范圍內(nèi)(比如[0,1]或者[-1,1]),從而消除奇異樣本數(shù)據(jù)導(dǎo)致的不良影響。通常有兩種方法實(shí)現(xiàn)歸一化。一種是在數(shù)據(jù)去均值后,每個(gè)維度的數(shù)據(jù)都除以這個(gè)維度上數(shù)據(jù)的標(biāo)準(zhǔn)差;另一種方法是除以數(shù)據(jù)絕對(duì)值的最大值,以保證所有數(shù)據(jù)歸一化后都在[-1,1]范圍內(nèi)。卷積層卷積層是卷積神經(jīng)網(wǎng)絡(luò)的重要組成部分。它包括一組卷積核,它們與給定輸入進(jìn)行卷積以生成輸出特征圖。通過(guò)多層卷積層的堆疊,各層提取到特征逐漸由邊緣、紋理、方向等低層級(jí)特征抽象到文字、車(chē)輪、人臉等高層級(jí)特征。池化層池化層的作用是減小卷積層產(chǎn)生的特征圖的尺寸,以降低網(wǎng)絡(luò)訓(xùn)練參數(shù)及模型的過(guò)擬合程度。池化層仿照了人類(lèi)視覺(jué)系統(tǒng)對(duì)視覺(jué)輸入對(duì)象進(jìn)行降維和抽象的過(guò)程。池化層通常位于兩個(gè)卷積層之間,每個(gè)池化層的特征圖和其相應(yīng)的前一卷積層的特征圖相連,因此它們的特征圖數(shù)量相同。和卷積層不同的是,池化層不包含需要學(xué)習(xí)的參數(shù)。全連接層全連接層(也叫前饋層)就可以用來(lái)將最后的輸出映射到線(xiàn)性可分的空間。如果說(shuō)卷積層、池化層等操作是將原始數(shù)據(jù)映射到特征空間的話(huà),全連接層則是起到將學(xué)到的特征表示映射到樣本的標(biāo)記空間。歡迎提問(wèn)下次再見(jiàn)5.4卷積神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)LeNet-5網(wǎng)絡(luò)構(gòu)建05第5章 卷積神經(jīng)網(wǎng)絡(luò)5.5LeNet-5網(wǎng)絡(luò)構(gòu)建LeNet-5模型網(wǎng)絡(luò)結(jié)構(gòu)圖5.5LeNet-5網(wǎng)絡(luò)構(gòu)建fromtensorflow.kerasimportSequentialfromtensorflow.keras.layersimportDense,Conv2D,MaxPooling2D,ReLU,Flatten
network=Sequential([#網(wǎng)絡(luò)容器Conv2D(6,kernel_size=3,strides=1),#第一個(gè)卷積層,6個(gè)3x3卷積核MaxPooling2D(pool_size=2,strides=2),#高寬各減半的池化層ReLU(),#激活函數(shù)Conv2D(16,kernel_size=3,strides=1),#第二個(gè)卷積層,16個(gè)3x3卷積核MaxPooling2D(pool_size=2,strides=2),#高寬各減半的池化層ReLU(),#激活函數(shù)Flatten(),#打平層,方便全連接層處理
Dense(120,activation='relu'),#全連接層,120個(gè)節(jié)點(diǎn)Dense(84,activation='relu'),#全連接層,84節(jié)點(diǎn)Dense(10)#全連接層,10個(gè)節(jié)點(diǎn)])#build一次網(wǎng)絡(luò)模型,給輸入X的形狀network.build(input_shape=(None,28,28,1))#統(tǒng)計(jì)網(wǎng)絡(luò)信息network.summary()5.5LeNet-5網(wǎng)絡(luò)構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)的出現(xiàn),網(wǎng)絡(luò)參數(shù)量大大減低,使得幾十層的深層網(wǎng)絡(luò)成為可能。網(wǎng)絡(luò)的加深使得網(wǎng)絡(luò)訓(xùn)練變得非常不穩(wěn)定,甚至出現(xiàn)網(wǎng)絡(luò)長(zhǎng)時(shí)間不更新甚至不收斂的現(xiàn)象,同時(shí)網(wǎng)絡(luò)對(duì)超參數(shù)比較敏感,超參數(shù)的微量擾動(dòng)也會(huì)導(dǎo)致網(wǎng)絡(luò)的訓(xùn)練軌跡完全改變。BatchNormalization5.5LeNet-5網(wǎng)絡(luò)構(gòu)建network=Sequential([#網(wǎng)絡(luò)容器Conv2D(6,kernel_size=3,strides=1),#插入BN層
BatchNormalization(),MaxPooling2D(pool_size=2,strides=2),ReLU(),Conv2D(16,kernel_size=3,strides=1),#插入BN層
BatchNormalization(),MaxPooling2D(pool_size=2,strides=2),ReLU(),Flatten(),Dense(120,activation='relu'),#此處也可以插入BN層
Dense(84,activation='relu'),#此處也可以插入BN層
Dense(10)])Conv-BN-ReLU-Pooling5.6BactchNorm層歡迎提問(wèn)下次再見(jiàn)5.5LeNet-5網(wǎng)絡(luò)構(gòu)建BatchNorm層06第5章 卷積神經(jīng)網(wǎng)絡(luò)5.6BactchNorm層卷積神經(jīng)網(wǎng)絡(luò)的出現(xiàn),網(wǎng)絡(luò)參數(shù)量大大減低,使得幾十層的深層網(wǎng)絡(luò)成為可能。網(wǎng)絡(luò)的加深使得網(wǎng)絡(luò)訓(xùn)練變得非常不穩(wěn)定,甚至出現(xiàn)網(wǎng)絡(luò)長(zhǎng)時(shí)間不更新甚至不收斂的現(xiàn)象,同時(shí)網(wǎng)絡(luò)對(duì)超參數(shù)比較敏感,超參數(shù)的微量擾動(dòng)也會(huì)導(dǎo)致網(wǎng)絡(luò)的訓(xùn)練軌跡完全改變。把每個(gè)輸入層(把隱藏層也理解成輸入層)都?xì)w一化。批歸一化(BatchNomalization)方法,對(duì)于每個(gè)隱藏層神經(jīng)元,把逐漸向非線(xiàn)性變換函數(shù)(激活函數(shù))映射后向取值區(qū)間極限飽和區(qū)靠攏的輸入分布強(qiáng)制拉回到均值為0方差為1的比較標(biāo)準(zhǔn)的正態(tài)分布,使得非線(xiàn)性變換函數(shù)的輸入值落入對(duì)輸入比較敏感的區(qū)域。5.6BactchNorm層tf.keras.layers.BatchNormalization()類(lèi)tf.keras.layers.BatchNormalization(axis=-1,momentum=0.99,epsilon=0.001,center=True,scale=True,beta_initializer='zeros',gamma_initializer='ones',moving_mean_initializer='zeros',moving_variance_initializer='ones',beta_regularizer=None,gamma_regularizer=None,beta_constraint=None,gamma_constraint=None,renorm=False,renorm_clipping=None,renorm
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨床試劑工崗前復(fù)試考核試卷含答案
- 社群健康助理員操作規(guī)范水平考核試卷含答案
- 粉末冶金工藝及材料課件
- 房源統(tǒng)購(gòu)合同范本
- 采耳行業(yè)合同范本
- 寫(xiě)轉(zhuǎn)讓合同協(xié)議書(shū)
- 香皂購(gòu)銷(xiāo)合同范本
- 通信安全協(xié)議合同
- 勞務(wù)兼職合同范本
- 投資占股合同范本
- 花店經(jīng)營(yíng)轉(zhuǎn)讓協(xié)議書(shū)
- 2025民族出版社專(zhuān)業(yè)技術(shù)人員公開(kāi)招聘4人(第二批北京)筆試考試參考試題及答案解析
- 煤礦班組長(zhǎng)安全培訓(xùn)
- 體育培訓(xùn)校區(qū)管理制度
- 2025江西撫州市臨川區(qū)招聘城市社區(qū)工作者(專(zhuān)職網(wǎng)格員)106人考試參考題庫(kù)附答案解析
- 食管癌診療課件
- 住宅項(xiàng)目工程總承包管理策劃(可編輯)
- 第三單元 珍愛(ài)我們的生命 新教材七年級(jí)上冊(cè)道德與法治 復(fù)習(xí)課件
- 2025新加坡建筑工程行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025年發(fā)展對(duì)象試題庫(kù)及參考答案
- 小學(xué)消防安全工作責(zé)任體系
評(píng)論
0/150
提交評(píng)論