在深度學習的演算法學習中,都會提到channels
這個概念。在一般的深度學習框架的conv2d
中,如 tensorflow 、mxnet ,channels
都是必填的乙個引數。
channels
該如何理解?先看一看不同框架中的解釋文件。
首先,是 tensorflow 中給出的,對於輸入樣本中channels
的含義。一般的rgb,channels
數量是 3 (紅、綠、藍);而monochrome,channels
數量是 1 。
channels: number of color channels in the example images. for color images, the number of channels is 3 (red, green, blue). for monochrome images, there is just 1 channel (black). ——tensorflow其次,mxnet 中提到的,一般
channels
的含義是,每個卷積層中卷積核的數量。
channels(int) : the dimensionality of the output space, i.e. the number of output channels (filters) in the convolution. ——mxnet為了更直觀的理解,下面舉個例子,使用自 吳恩達老師的深度學習課程 。
如下圖,假設現有乙個為 6×6×3
的樣本,使用 3×3×3 的卷積核(filter)進行卷積操作。此時輸入的channels
為 3
,而卷積核中的in_channels
與 需要進行卷積操作的資料的channels
一致(這裡就是樣本,為3)。
接下來,進行卷積操作,卷積核中的27個數字與分別與樣本對應相乘後,再進行求和,得到第乙個結果。依次進行,最終得到 4×4
的結果。
上面步驟完成後,由於只有乙個卷積核,所以最終得到的結果為 4×4×1
,out_channels
為 1
在實際應用中,都會使用多個卷積核。這裡如果再加乙個卷積核,就會得到 4×4×2
的結果。
總結一下,我偏好把上面提到的channels
分為三種:
最初輸入的樣本的channels
,取決於型別,比如rgb;
卷積操作完成後輸出的out_channels
,取決於卷積核的數量。此時的out_channels
也會作為下一次卷積時的卷積核的in_channels
;
卷積核中的in_channels
,剛剛2中已經說了,就是上一次卷積的out_channels
,如果是第一次做卷積,就是1中樣本的channels
。
說到這裡,相信已經把channels
講的很清楚了。在cnn中,想搞清楚每一層的傳遞關係,主要就是height
,width
的變化情況,和channels
的變化情況。
最後再看看 tensorflow 中tf.nn.conv2d
的input
和filter
這兩個引數。
input : [batch, in_height, in_width, in_channels]
,
filter : [filter_height, filter_width, in_channels, out_channels]
。
裡面的含義是不是很清楚了?
理解卷積神經網路中的通道 channel
6 36 6 3 的樣本,使用 3 3 33 3 3 的卷積核 filter 進行卷積操作。此時輸入的channels為 3 3 而卷積核中的in channels與 需要進行卷積操作的資料的channels一致 這裡就是樣本,為3 4 4 4 的結果。4 14 4 1 out channels為 ...
pipeline和channel的區別
在golang中,學到channel時,往往都會產生一些疑惑,和channel的區別是什麼?以下就是區別 difference channel pipeline structure streams of a go type unstructured streams of bytes platform...
卷積和反卷積
n image h 2 pad h kernel h stride h 1 image w 2 pad w kernel w stride w 1 image h 輸入影象的高度 image w 輸入影象的寬度 pad h 在輸入影象的高度方向兩邊各增加pad h個單位長度 因為有兩邊,所以乘以2 ...