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