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