channel和卷積的過程

2021-08-21 15:48:58 字數 2329 閱讀 7832

在深度學習的演算法學習中,都會提到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.conv2dinputfilter這兩個引數。

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 ...