日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理

發(fā)布時間:2023/11/27 生活经验 34 豆豆

卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNNCNN 被用于圖像識別、語音識別等各種場合,在圖像識別的比賽中,基于深度學(xué)習(xí)的方法幾乎都以 CNN 為基礎(chǔ)。

1. 全連接層

1.1 全連接層網(wǎng)絡(luò)結(jié)構(gòu)

之前介紹的神經(jīng)網(wǎng)絡(luò)中,相鄰層的所有神經(jīng)元之間都有連接,這稱為全連接(fully-connected )。另外,我們用 Affine 層實現(xiàn)了全連接層。如果使用這個 Affine 層,一個 5 層的全連接的神經(jīng)網(wǎng)絡(luò)就可以通過圖7-1 所示的網(wǎng)絡(luò)結(jié)構(gòu)來實現(xiàn)。


Affine 層后面跟著激活函數(shù) ReLU 層(或者 Sigmoid 層)。這里堆疊了4 層Affine-ReLU 組合,然后第 5 層是 Affine 層,最后由 Softmax 層輸出最終結(jié)果(概率)。

全連接層的主要作用是將輸入圖像在經(jīng)過卷積和池化操作后提取的特征進(jìn)行壓縮,并且根據(jù)壓縮的特征完成模型的分類功能。如圖4-6所示是一個全連接層的簡化流程。


其實全連接層的計算比卷積層和池化層更簡單,如圖 4-6 所示的輸入就是我們通過卷積層和池化層提取的輸入圖像的核心特征,與全連接層中定義的權(quán)重參數(shù)相乘,最后被壓縮成僅有的10個輸出參數(shù),這10個輸出參數(shù)其實已經(jīng)是一個分類的結(jié)果,再經(jīng)過激活函數(shù)的進(jìn)一步處理,就能讓我們的分類預(yù)測結(jié)果更明顯。將 10個參數(shù)輸入到 Softmax 激活函數(shù)中,激活函數(shù)的輸出結(jié)果就是模型預(yù)測的輸入圖像對應(yīng)各個類別的可能性值。

1.2 全連接層缺陷

在全連接層中,相鄰層的神經(jīng)元全部連接在一起,輸出的數(shù)量可以任意決定。

全連接層存在什么問題呢?那就是數(shù)據(jù)的形狀被“忽視”了。比如,輸入數(shù)據(jù)是圖像時,圖像通常是高、長、通道方向上的 3 維形狀。但是,向全連接層輸入時,需要將 3 維數(shù)據(jù)拉平為 1 維數(shù)據(jù)。實際上,前面提到的使用了 MNIST 數(shù)據(jù)集的例子中,輸入圖像就是 1 通道、高 28 像素、長 28 像素的(1, 28, 28)形狀,但卻被排成1 列,以 784 個數(shù)據(jù)的形式輸入到最開始的 Affine 層。

圖像是3 維形狀,這個形狀中應(yīng)該含有重要的空間信息。比如,空間上鄰近的像素為相似的值、RBG 的各個通道之間分別有密切的關(guān)聯(lián)性、相距較遠(yuǎn)的像素之間沒有什么關(guān)聯(lián)等,3 維形狀中可能隱藏有值得提取的本質(zhì)模式。

但是,因為全連接層會忽視形狀,將全部的輸入數(shù)據(jù)作為相同的神經(jīng)元(同一維度的神經(jīng)元)處理,所以無法利用與形狀相關(guān)的信息。

2. 卷積神經(jīng)網(wǎng)絡(luò)

卷積層(Convolution Layer)的主要作用是對輸入的數(shù)據(jù)進(jìn)行特征提取,而完成該功能的是卷積層中的卷積核(Filter)。

我們可以將卷積核看作一個指定窗口大小的掃描器,掃描器通過一次又一次地掃描輸入的數(shù)據(jù),來提取數(shù)據(jù)中的特征。如果我們輸入的是圖像數(shù)據(jù),那么在通過卷積核的處理后,就可以識別出圖像中的重要特征了。

那么,在卷積層中是如何定義這個卷積核的呢?卷積層又是怎樣工作的呢?下面通過一個實例進(jìn)行說明。

假設(shè)有一張 32×32×3 的輸入圖像,其中 32×32 指圖像的高度×寬度,3 指圖像具有 RGB 三個色彩通道,即紅色(Red)、綠色(Green)和藍(lán)色(Blue),我們定義一個窗口大小為 5×5×3 的卷積核,其中 5×5 指卷積核的高度×寬度,3 指卷積核的深度,對應(yīng)之前輸入圖像的 RGB 三個色彩通道,這樣做的目的是當(dāng)卷積核窗口在輸入圖像上滑動時,能夠一次在其三個色彩通道上同時進(jìn)行卷積操作。

注意,如果我們的原始輸入數(shù)據(jù)都是圖像,那么我們定義的卷積核窗口的寬度和高度要比輸入圖像的寬度和高度小,較常用的卷積核窗口的寬度和高度大小是 3×3 和 5×5。

在定義卷積核的深度時,只要保證與輸入圖像的色彩通道一致就可以了,如果輸入圖像是3個色彩通道的,那么卷積核的深度就是3;如果輸入圖像是單色彩通道的,那么卷積核的深度就是1,以此類推。如圖4-1所示為單色彩通道的輸入圖像的卷積過程。

如圖 7-2 所示,CNN 中新增了 Convolution (卷積層) 層和 Pooling (池化層) 層。CNN 的層的連接順序是 Convolution - ReLU -(Pooling)Pooling 層有時會被省略)。這可以理解為之前的 Affi ne - ReLU 連接被替換成了 Convolution -ReLU -(Pooling) 連接。

還需要注意的是,在圖7-2 的 CNN 中,靠近輸出的層中使用了之前的 Affine - ReLU 組合。此外,最后的輸出層中使用了之前的 Affine -Softmax 組合。這些都是一般的CNN 中比較常見的結(jié)構(gòu)。

2.1 卷積比全連接層的優(yōu)勢

卷積層可以保持形狀不變。當(dāng)輸入數(shù)據(jù)是圖像時,卷積層會以3 維數(shù)據(jù)的形式接收輸入數(shù)據(jù),并同樣以 3 維數(shù)據(jù)的形式輸出至下一層。

因此,在 CNN 中,可以(有可能)正確理解圖像等具有形狀的數(shù)據(jù)。

2.2 卷積運算

卷積層進(jìn)行的處理就是卷積運算。卷積運算相當(dāng)于圖像處理中的“濾波器運算”。

濾波器在有的文獻(xiàn)中也稱作為 “卷積核”。

計算過程如下:

1 * 2 + 2 * 0 + 3 * 1 + 0 * 0 + 1 * 1 + 2 * 2 + 3 * 1 + 0 * 0 + 1 * 2 = 15
2 * 2 + 3 * 0 + 0 * 1 + 1 * 0 + 2 * 1 + 3 * 2 + 0 * 1 + 1 * 0 + 2 * 2 = 16

圖 7-4 中展示了卷積運算的計算順序。對于輸入數(shù)據(jù),卷積運算以一定間隔滑動濾波器的窗口并應(yīng)用。這里所說的窗口是指圖7-4 中灰色的3 × 3 的部分。如圖7-4 所示,將各個位置上濾波器的元素和輸入的對應(yīng)元素相乘,然后再求和(有時將這個計算稱為乘積累加運算)。然后,將這個結(jié)果保存到輸出的對應(yīng)位置。將這個過程在所有位置都進(jìn)行一遍,就可以得到卷積運算的輸出。


CNN 中,濾波器的參數(shù)就對應(yīng)之前的權(quán)重。并且,CNN 中也存在偏置。包含偏置的卷積運算的處理流如圖7-5 所示。

如圖7-5 所示,向應(yīng)用了濾波器的數(shù)據(jù)加上了偏置。偏置通常只有1 個(1 × 1)(本例中,相對于應(yīng)用了濾波器的4 個數(shù)據(jù),偏置只有1 個),這個值會被加到應(yīng)用了濾波器的所有元素上。

2.3 填充

在進(jìn)行卷積層的處理之前,有時要向輸入數(shù)據(jù)的周圍填入固定的數(shù)據(jù)(比如0 等),這稱為填充(padding),是卷積運算中經(jīng)常會用到的處理。

比如,在圖7-6 的例子中,對大小為(4, 4) 的輸入數(shù)據(jù)應(yīng)用了幅度為 1 的填充。“幅度為1 的填充”是指用幅度為 1 像素的 0 填充周圍。


如圖 7-6 所示,通過填充,大小為 (4, 4) 的輸入數(shù)據(jù)變成了 (6, 6) 的形狀。然后,應(yīng)用大小為 (3, 3) 的濾波器,生成了大小為 (4, 4) 的輸出數(shù)據(jù)。這個例子中將填充設(shè)成了 1,不過填充的值也可以設(shè)置成 2、3 等任意的整數(shù)。

使用填充主要是為了調(diào)整輸出的大小。比如,對大小為 (4, 4) 的輸入數(shù)據(jù)應(yīng)用 (3, 3) 的濾波器時,輸出大小變?yōu)?(2, 2),相當(dāng)于輸出大小比輸入大小縮小了 2 個元素。這在反復(fù)進(jìn)行多次卷積運算的深度網(wǎng)絡(luò)中會成為問題。

為什么呢?因為如果每次進(jìn)行卷積運算都會縮小空間,那么在某個時刻輸出大小就有可能變?yōu)?1,導(dǎo)致無法再應(yīng)用卷積運算。為了避免出現(xiàn)這樣的情況,就要使用填充。

在剛才的例子中,將填充的幅度設(shè)為 1,那么相對于輸入大小 (4, 4),輸出大小也保持為原來的 (4, 4)。因此,卷積運算就可以在保持空間大小不變的情況下將數(shù)據(jù)傳給下一層。

2.4 步幅

應(yīng)用濾波器的位置間隔稱為步幅(stride)。之前的例子中步幅都是 1,如果將步幅設(shè)為 2,則如圖 7-7 所示,應(yīng)用濾波器的窗口的間隔變?yōu)?2 個元素。


在圖 7-7 的例子中,對輸入大小為 (7, 7) 的數(shù)據(jù),以步幅 2 應(yīng)用了濾波器。通過將步幅設(shè)為 2,輸出大小變?yōu)?(3, 3)。像這樣,步幅可以指定應(yīng)用濾波器的間隔。

綜上,增大步幅后,輸出大小會變小。而增大填充后,輸出大小會變大。

如果將這樣的關(guān)系寫成算式,會如何呢?接下來,我們看一下對于填充和步幅,如何計算輸出大小。

這里,假設(shè)輸入大小為 (H,W) ,濾波器大小為 (FH, FW) ,輸出大小為 (OH,OW) ,填充為 P ,步幅為 S 。此時,輸出大小可通過式 (7.1) 進(jìn)行計算。

計算示例如下:

如果式 7.1 中當(dāng)輸出大小無法除盡時(結(jié)果是小數(shù)時),需要采取報錯等對策。順便說一下,根據(jù)深度學(xué)習(xí)的框架的不同,當(dāng)值無法除盡時,有時會向最接近的整數(shù)四舍五入,不進(jìn)行報錯而繼續(xù)運行。

2.5 三維數(shù)據(jù)的卷積運算

圖7-8 是卷積運算的例子,圖7-9 是計算順序。這里以 3 通道的數(shù)據(jù)為例,展示了卷積運算的結(jié)果。和 2 維數(shù)據(jù)時(圖7-3 的例子)相比,可以發(fā)現(xiàn)縱深方向(通道方向)上特征圖增加了。通道方向上有多個特征圖時,會按通道進(jìn)行輸入數(shù)據(jù)和濾波器的卷積運算,并將結(jié)果相加,從而得到輸出。



需要注意的是,在 3 維數(shù)據(jù)的卷積運算中,輸入數(shù)據(jù)和濾波器的通道數(shù)要設(shè)為相同的值。在這個例子中,輸入數(shù)據(jù)和濾波器的通道數(shù)一致,均為 3。

濾波器大小可以設(shè)定為任意值(不過,每個通道的濾波器大小要全部相同)。這個例子中濾波器大小為 (3, 3),但也可以設(shè)定為 (2, 2)、(1, 1)、(5, 5) 等任意值。

再強調(diào)一下,通道數(shù)只能設(shè)定為和輸入數(shù)據(jù)的通道數(shù)相同的值(本例中為3)。

2.6 多濾波器(卷積核)運算

將數(shù)據(jù)和濾波器結(jié)合長方體的方塊來考慮,3 維數(shù)據(jù)的卷積運算會很容易理解。

方塊是如圖7-10 所示的 3 維長方體。把 3 維數(shù)據(jù)表示為多維數(shù)組時,書寫順序為 (channel, height, width)。比如,通道數(shù)為 C 、高度為 H 、長度為 W 的數(shù)據(jù)的形狀可以寫成 (C,H,W) 。濾波器也一樣,要按(channel,height, width) 的順序書寫。比如,通道數(shù)為 C 、濾波器高度為 FH(Filter Height) 、長度為 FW(Filter Width) 時,可以寫成 (C, FH, FW)


如果要在通道方向上也擁有多個卷積運算的輸出,就需要用到多個濾波器(權(quán)重)。用圖表示的話,如圖7-11 所示。

圖 7-11 中,通過應(yīng)用 FN 個濾波器,輸出特征圖也生成了 FN 個。如果將這 FN 個特征圖匯集在一起,就得到了形狀為 (FN, OH,OW) 的方塊。將這個方塊傳給下一層,就是 CNN 的處理流。

如圖 7-11 所示,關(guān)于卷積運算的濾波器,也必須考慮濾波器的數(shù)量。因此,作為 4 維數(shù)據(jù),濾波器的權(quán)重數(shù)據(jù)要按 (output_channel, input_channel, height, width) 的順序書寫。比如,通道數(shù)為 3、大小為 5 × 5 的濾波器有20 個時,可以寫成 (20, 3, 5, 5)。

卷積運算中(和全連接層一樣)存在偏置。在圖7-11 的例子中,如果進(jìn)一步追加偏置的加法運算處理,則結(jié)果如下面的圖7-12 所示。

圖 7-12 中,每個通道只有一個偏置。這里,偏置的形狀是 (FN, 1, 1) ,濾波器的輸出結(jié)果的形狀是 (FN, OH,OW) 。這兩個方塊相加時,要對濾波器的輸出結(jié)果 (FN, OH,OW) 按通道加上相同的偏置值。另外,不同形狀的方塊相加時,可以基于 NumPy 的廣播功能輕松實現(xiàn)。

2.7 批處理

通過批處理,能夠?qū)崿F(xiàn)處理的高效化和學(xué)習(xí)時對 mini-batch 的對應(yīng)。

我們希望卷積運算也同樣對應(yīng)批處理。為此,需要將在各層間傳遞的數(shù)據(jù)保存為 4 維數(shù)據(jù)。具體地講,就是按 (batch_num, channel, height, width) 的順序保存數(shù)據(jù)。比如,將圖 7-12 中的處理改成對 N 個數(shù)據(jù)進(jìn)行批處理時,數(shù)據(jù)的形狀如圖7-13 所示。

圖7-13 的批處理版的數(shù)據(jù)流中,在各個數(shù)據(jù)的開頭添加了批用的維度。像這樣,數(shù)據(jù)作為 4 維的形狀在各層間傳遞。這里需要注意的是,網(wǎng)絡(luò)間傳遞的是 4 維數(shù)據(jù),對這 N 個數(shù)據(jù)進(jìn)行了卷積運算。也就是說,批處理將 N 次的處理匯總成了 1 次進(jìn)行。

總結(jié)

以上是生活随笔為你收集整理的机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。