這篇文章給大家分享的是有關(guān)SpringBoot整合MybatisPlus中卷積層+激活函數(shù)+池化層+全連接層的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、海珠網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
1. 卷積層
卷積是一種有效提取圖片特征的方法 。 一般用一個正方形卷積核,遍歷圖片上的每一個像素點(diǎn)。圖片與卷積核重合區(qū)域內(nèi)相對應(yīng)的每一個像素值,乘卷積核內(nèi)相對應(yīng)點(diǎn)的權(quán)重,然后求和, 再加上偏置后,最后得到輸出圖片中的一個像素值。
圖片分灰度圖和彩色圖,卷積核可以是單個也可以是多個,因此卷積操作分以下三種情況:
這里單通道指的是輸入為灰度圖,單卷積核值卷積核個數(shù)是1個。
上面是 5x5x1 的灰度圖片,1 表示單通道,5x5 表示分辨率,共有 5 行 5列個灰度值。若用一個 3x3x1 的卷積核對此 5x5x1 的灰度圖片進(jìn)行卷積,偏置項(xiàng)b=1,則求卷積的計(jì)算是:(-1)x1+0x0+1x2+(-1)x5+0x4+1x2+(-1)x3+0x4+1x5+1=1(注意不要忘記加偏置 1)。
多數(shù)情況下,輸入的圖片是 RGB 三個顏色組成的彩色圖,輸入的圖片包含了紅、綠、藍(lán)三層數(shù)據(jù),卷積核的深度(通道數(shù))應(yīng)該等于輸入圖片的通道數(shù),所以使用 3x3x3的卷積核,最后一個 3 表示匹配輸入圖像的 3 個通道,這樣這個卷積核有三通道,每個通道都會隨機(jī)生成 9 個待優(yōu)化的參數(shù),一共有 27 個待優(yōu)化參數(shù) w 和一個偏置 b。
注:這里還是單個卷積核的情況,但是一個卷積核可以有多個通道。默認(rèn)情況下,卷積核的通道數(shù)等于輸入圖片的通道數(shù)。
多通道輸入、多卷積核是深度神經(jīng)網(wǎng)絡(luò)中間最常見的形式。指的是多通道輸入,且用多個卷積核的情況。那么卷積過程其實(shí)也很簡單,以3通道輸入,2個卷積核為例:
(1)先取出一個卷積核與3通道的輸入進(jìn)行卷積,這個過程就和多通道輸入,單卷積核一樣,得到一個1通道的輸出output1。同樣再取出第二個卷積核進(jìn)行同樣的操作,得到第二個輸出output2
(2)將相同size的output1與output2進(jìn)行堆疊,就得到2通道的輸出output。
為了更直觀地理解,下面給出圖示:
圖中輸入X:[1,h,w,3]指的是:輸入1張高h(yuǎn)寬w的3通道圖片。
卷積核W:[k,k,3,2]指的是:卷積核尺寸為3*3,通道數(shù)為3,個數(shù)為2。
總結(jié):
(1)卷積操作后,輸出的通道數(shù)=卷積核的個數(shù)
(2)卷積核的個數(shù)和卷積核的通道數(shù)是不同的概念。每層卷積核的個數(shù)在設(shè)計(jì)網(wǎng)絡(luò)時會給出,但是卷積核的通道數(shù)不一定會給出。默認(rèn)情況下,卷積核的通道數(shù)=輸入的通道數(shù),因?yàn)檫@是進(jìn)行卷積操作的必要條件。
為了使卷積操作后能得到滿意的輸出圖片尺寸,經(jīng)常會使用padding對輸入進(jìn)行填充操作。默認(rèn)在圖片周圍填充0。
(1)全零填充padding=‘same’
使用same時,會自動對原圖進(jìn)行全0填充,當(dāng)步長為1時,可以保證輸出的圖片與輸入的圖片尺寸一致。
輸出尺寸計(jì)算公式:輸入長/步長 (向上取整)
TensorFlow中實(shí)現(xiàn)如下:(這里以卷積核個數(shù):48,卷積核尺寸:3,步長:1,全填充為例)
layers.Conv2D(48, kernel_size=3, strides=1, padding='same')
(2)不填充padding=‘valid’
使用valid時,不進(jìn)行任何填充,直接進(jìn)行卷積。
輸出尺寸計(jì)算公式:(輸入長-核長)/步長+1 (向下取整)
TensorFlow中實(shí)現(xiàn)如下:
layers.Conv2D(48, kernel_size=3, strides=1, padding='valid')
(3)自定義填充
一般是從上下左右四個方向進(jìn)行填充,且左、右填充的列數(shù) p w p_w pw一般相同,上、下填充的行數(shù) p h p_h ph也應(yīng)該相同。如下圖所示:
輸出尺寸計(jì)算公式:
其中,h,w為原圖的高和寬,k是卷積核的尺寸,s是步長。
在TensorFlow2.0中,自定義填充過程中,padding參數(shù)的設(shè)置格式為:
padding=[ [0,0],[上,下],[左,右],[0,0] ]
# 例如要在上下左右各填充一個單位,實(shí)現(xiàn)如下:layers.Conv2D(48, kernel_size=3, strides=1, padding=[[0,0], [1,1], [1,1], [0,0]])
在卷積層中,可以通過調(diào)節(jié)步長參數(shù) s 實(shí)現(xiàn)特征圖的高寬成倍縮小,從而降低了網(wǎng)絡(luò)的參數(shù)量。實(shí)際上,除了通過設(shè)置步長,還有一種專門的網(wǎng)絡(luò)層可以實(shí)現(xiàn)尺寸縮減功能,它就是我們要介紹的池化層(Pooling layer)。
池化層同樣基于局部相關(guān)性的思想,通過從局部相關(guān)的一組元素中進(jìn)行采樣或信息聚合,從而得到新的元素值。通常我們用到兩種池化進(jìn)行下采樣:
(1)最大池化(Max Pooling)
從局部相關(guān)元素集中選取最大的一個元素值。
(2)平均池化(Average Pooling)
從局部相關(guān)元素集中計(jì)算平均值并返回。
激活函數(shù)也是神經(jīng)網(wǎng)絡(luò)不可缺少的部分,常用的激活函數(shù)有好幾種,具體如何選擇合適的激活函數(shù)可參考我的這篇博文:神經(jīng)網(wǎng)絡(luò)搭建:激活函數(shù)總結(jié)
全連接層簡稱FC。之所以叫全連接,是因?yàn)槊總€神經(jīng)元與前后相鄰層的每一個神經(jīng)元都有連接關(guān)系。如下圖所示,是一個簡單的兩層全連接網(wǎng)絡(luò),輸入時特征,輸出是預(yù)測的結(jié)果。
全連接層的參數(shù)量是可以直接計(jì)算的,計(jì)算公式如下:
按照上圖搭建的兩層全連接網(wǎng)絡(luò),要訓(xùn)練分辨率僅僅是 28x28=784 的黑白圖像,就有近 40 萬個待優(yōu)化的參數(shù)?,F(xiàn)實(shí)生活中高分辨率的彩色圖像,像素點(diǎn)更多,且為紅綠藍(lán)三通道信息。待優(yōu)化的參數(shù)過多, 容易導(dǎo)致模型過擬合。為避免這種現(xiàn)象,實(shí)際應(yīng)用中一般不會將原始圖片直接喂入全連接網(wǎng)絡(luò)。
在實(shí)際應(yīng)用中,會先對原始圖像進(jìn)行卷積特征提取,把提取到的特征喂給全連接網(wǎng)絡(luò),再讓全連接網(wǎng)絡(luò)計(jì)算出分類評估值。
更新:
2015 年,Google 研究人員Sergey 等基于參數(shù)標(biāo)準(zhǔn)化設(shè)計(jì)了BN層。BN層提出后,廣泛地應(yīng)用在各種深度網(wǎng)絡(luò)模型上,使得網(wǎng)絡(luò)的超參數(shù)的設(shè)定更加自由,同時網(wǎng)絡(luò)的收斂速度更快,性能也更好。
感謝各位的閱讀!關(guān)于“SpringBoot整合MybatisPlus中卷積層+激活函數(shù)+池化層+全連接層的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!