卷積網路keras實現的部分理解

2021-08-08 21:25:29 字數 1192 閱讀 9464

參考

cnn簡介(原圖到特徵圖的對映)

1. 卷積有padding和stride,左上頂頭開始,直到遍歷完輸入影象的所有畫素(即使靠右靠下還有剩餘padding也不再計算)。

奇數影象stride=(2,2),no padding卷積:先減1,再除以2。

影象大小m*m,核k*k,stride=s,輸出大小[m/s]-(k-1)/s。表上取整。

2. padding=same:0填充,padding=valid:不填充。參考,參考2

3. 奇數影象(2,2)池化:先加1,再除以2

4. dropout=p:以概率p捨棄神經元,即其中p不工作。防止過擬合

5. conv2dtranspose:反卷積,**。

stride-1是在輸入影象兩畫素間插入的0畫素數。

no strides的反卷積=no strides的卷積,尺寸的計算公式同為out=in+2*padding-kernal+1。

有stride時: 無padding的反卷積,核從只包含輸入影象左上角乙個畫素的視窗開始滑動,到只包含輸入影象右下角乙個畫素的視窗停止;

無padding的計算公式:out=kernel-1+(stride-1)(in-1)+in=stride*in+kernel-stride

有padding的反卷積,只需用上所有padding,不一定從只含乙個畫素的視窗開始滑動。

6. cropping2d:(a,b), (c,d)表示,行從上數裁a行,從下數裁b行;列從左數裁c行,從右數裁d行。

7. predict函式中,verbose=false,表示訓練時不顯示資料。參考

8. kernal=k, stride=s, 卷積前影象邊長為w, 卷積後邊長為(w-k)/s+1。若有padding, 則輸出影象邊長(w-k+2padding)/s+1。反推可得到神經元在前一層的感受野大小。

若第i層感受野中心為p_i,由這個感受野得到第i+1層的乙個神經元,位置為p_(i+1),則有p_i=s_i*p_(i+1)+(k_i-1)/2-padding。由此知道感受野中心位置和大小,則感受野可在圖中唯一確定。

何愷明對此公式進行了簡化,令padding=[k_i/2]下取整。由於座標只有整數,所以最終近似為p_i=s_i*p_(i+1),級聯得到p_0=s*p_i,s是從0到i-1的s連乘。

這樣,已知原始影象某一矩形,則可根據矩形的對角兩點找到特徵圖中對應矩形的對角兩點,做到圖到特徵的對映。

Keras實現卷積神經網路

1 coding utf 8 2 3created on sun jan 20 11 25 29 201945 author zhen 6 78 import numpy as np 9from keras.datasets import mnist 10from keras.models impo...

Keras 2 3 keras實現卷積神經網路

cnn convolutional neural networks 卷積神經網路在 keras 上的 實現。用到的資料集還是mnist。不同的是這次用到的層比較多,匯入的模組也相應增加了一些。下面直接進入 部分 import numpy as np np.random.seed 1337 for r...

keras實現分組卷積

分組卷積在pytorch中比較容易實現,只需要在卷積的時候設定group引數即可 比如設定分組數為2 conv group nn.conv2d c in,c out,kernel size 3,stride 3,padding 1,groups 2 但是,tensorflow中目前還沒有分組卷積,只...