二維卷積神經網路的結構理解
針對這個圖,我們對應著卷積的api函式來說:
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)
如上圖:
第一列為一張輸入影象, 大小為7*7*3, 即寬高為7*7, 通道數為3
所以inputs的維度就是: [-1, 7, 7, 3] , -1是表示batch的大小可以隨意,基於輸入決定
第二列和第三列為一個卷積層, 對應著引數filter, 它是一個4d的引數, 分別為卷積層的高,寬,影象通道數,卷積核數
寬高很顯然是3*3, 就是第二列或者第三列裡面的一個紅色的矩形的寬高
影象通道數,對應著輸入影象的通道數,也就是3,也就是第二列Filter W0或W1中的3*3矩形的個數, 可以看到上面第一列和第二列之間的連線,說明第一列的7*7的矩形個數和第二列的3*3的矩形個數要一致,都是影象的通道數
卷積核數,就是第二列到第三列的列數,只有兩列,所以卷積核數是2, 一個卷積核是指整個第二列或第三列, 卷積核不是那個3*3的矩形,是整個第二列的3個3*3的矩形的組合, 所以整個第二列是一個卷積核,第三列也是一個卷積核
第四列是卷積後的值
輸入層和第二列的卷積核計算得到的結果為Output Volume的第一個3*3的矩陣, 這個3*3矩陣的每個元素都會加上b[0],上圖是已經加後的結果
輸入層和第三列的卷積核計算得到的結果為Output Volume的第二個3*3的矩陣, 這個3*3矩陣的每個元素都會加上b[1],上圖是已經加後的結果
偏執b的維度及其加法規則:
偏執b是一個一維的向量,維度與卷積核數一致,也就是2, 所以b的維度是2*1
加法規則上面已經解釋了, 因為b的維度與卷積核的維度一致,所以是輸入層和第一個卷積核每步計算的結果要加上b[0], 輸入層和第二個卷積核每步計算的結果要加上b[1]