雖然我們?cè)诘?7.1.4 節(jié)中描述了構(gòu)成每個(gè)圖像的多個(gè)通道(例如,彩色圖像具有標(biāo)準(zhǔn)的 RGB 通道來(lái)指示紅色、綠色和藍(lán)色的數(shù)量)和多個(gè)通道的卷積層,但到目前為止,我們簡(jiǎn)化了 所有我們的數(shù)值示例僅使用單個(gè)輸入和單個(gè)輸出通道。這使我們能夠?qū)⑤斎搿⒕矸e核和輸出視為二維張量。
當(dāng)我們將通道添加到混合中時(shí),我們的輸入和隱藏表示都變成了三維張量。例如,每個(gè) RGB 輸入圖像都有形狀3×h×w. 我們將這個(gè)尺寸為 3 的軸稱為通道維度。通道的概念與 CNN 本身一樣古老。例如 LeNet5 ( LeCun et al. , 1995 )使用它們。在本節(jié)中,我們將更深入地了解具有多個(gè)輸入和多個(gè)輸出通道的卷積核。
import tensorflow as tf
from d2l import tensorflow as d2l
7.4.1. 多個(gè)輸入通道
當(dāng)輸入數(shù)據(jù)包含多個(gè)通道時(shí),我們需要構(gòu)造一個(gè)與輸入數(shù)據(jù)具有相同輸入通道數(shù)的卷積核,以便與輸入數(shù)據(jù)進(jìn)行互相關(guān)。假設(shè)輸入數(shù)據(jù)的通道數(shù)為ci, 卷積核的輸入通道數(shù)也需要為 ci. 如果我們的卷積核的窗口形狀是 kh×kw, 那么當(dāng)ci=1,我們可以將卷積核視為形狀的二維張量 kh×kw.
然而,當(dāng)ci>1,我們需要一個(gè)包含形狀張量的內(nèi)核kh×kw對(duì)于每個(gè)輸入通道。連接這些ci張量一起產(chǎn)生形狀的卷積核 ci×kh×kw. 由于輸入和卷積核各有ci通道,我們可以對(duì)每個(gè)通道的輸入的二維張量和卷積核的二維張量進(jìn)行互相關(guān)運(yùn)算,加上ci結(jié)果一起(對(duì)通道求和)以產(chǎn)生二維張量。這是多通道輸入和多輸入通道卷積核之間的二維互相關(guān)的結(jié)果。
圖 7.4.1提供了具有兩個(gè)輸入通道的二維互相關(guān)的示例。陰影部分是第一個(gè)輸出元素以及用于輸出計(jì)算的輸入和內(nèi)核張量元素: (1×1+2×2+4×3+5×4)+(0×0+1×1+3×2+4×3)=56.
圖 7.4.1 2 個(gè)輸入通道的互相關(guān)計(jì)算。
為了確保我們真正理解這里發(fā)生了什么,我們可以自己實(shí)現(xiàn)多個(gè)輸入通道的互相關(guān)操作。請(qǐng)注意,我們所做的只是對(duì)每個(gè)通道執(zhí)行互相關(guān)運(yùn)算,然后將結(jié)果相加。
我們可以構(gòu)造對(duì)應(yīng)于圖 7.4.1中的值的輸入張量X
和核張量來(lái)驗(yàn)證互相關(guān)運(yùn)算的輸出。K
tensor([[ 56., 72.],
[104., 120.]])
array([[ 56., 72.],
[104., 120.]])
評(píng)論