之前学习CNN时,知道CNN是做特征升维的,随着设置不同的步长以及子采样来提升维度。比如一个图片28*28像素,设置步长为1并使用max_pool_2x2可以升维到14*14。但不知道具体卷积的计算过程,网上的解释也很少,所以直到今天实验之后才总算弄明白了。
先看卷积计算公式:(很重要很重要很重要,重要的事情说三遍)
L` = (L-1)/S+1; 式一
P = (K-1)/2; 式二
说明:
L`:卷积后的维度;
L:卷积前的维度;
K:卷积核的维度;
P:Padding(填充)维度;
S:步长。
假设我们有一张6*6的图片,卷积核为3*3,步长为1。例如:
1 | 4 | 0 | 4 | 1 | 0 |
3 | 3 | 0 | 2 | 4 | 4 |
4 | 2 | 3 | 4 | 1 | 4 |
3 | 1 | 1 | 1 | 4 | 1 |
0 | 0 | 3 | 2 | 4 | 2 |
4 | 4 | 3 | 3 | 0 | 0 |