多个卷积层间合并的分析

1 经过卷积层前后的变化

假设输入数据为 channel1 × nh × nw 经过一个 kh × kw 的卷积核,步长为 s,padding为 p,则输出的空间维度为 nh​ − kh​ p​ s + 1⌋ × nw​ − kw​ p​ s + 1⌋,易知,输出空间存在 ⌊nh​ − kh​ p​ s + 1⌋ nw​ − kw​ p​ s + 1⌋ 个单元

下面用 mh 和 mw 分别代表输出的空间维度,此时输出空间内的一个单元在输入空间上的感受野为 kh * kw,那么输出空间内全部单元的感受野之和为 m* m* kh * kw,而输出空间在输入空间上感受野最大即为输入空间本身,即 nh * nw 。

下面根据不同情况分析(不考虑 padding):

  • kh > sh && kw > sw 时,输入空间上的一个单元会成为输出空间的多个单元的感受野,这样就会导致输出空间内全部单元的感受野之和大于输入空间本身,大于的具体数量即为重复计算的感受野
  • kh < sh && kw < sw 时,输入空间上的部分单元不会成为输出空间的任何单元的感受野,这样就会导致输出空间内全部单元的感受野之和小于输入空间本身,小于的具体数量即为输入空间没有被感受的单元
  • kh == sh && kw == sw 时,输出空间内全部单元的感受野之和等于输入空间本身。

2 卷积核的合并

要保证数个卷积层相当于一个卷积层,要做到两者对相同维度的输入,有相同维度的输出。

因为深度学习中卷积核大小往往大于步长,下面我们只考虑 kh > sh && kw > sw && p == 0 && s== sw 时的情况。

2.1 两个3 × 3卷积核相当于一个5 × 5卷积核

假设输入数据为 channel1 × nh × nw,经过一个 channel1 × 3 × 3 的卷积核,输出的空间维度即为 channel1 × ⌊nh​ − 3​ sh + 1⌋ × nw​ − 3 sw + 1⌋。

设 ⌊nh​ − 3​ sh + 1⌋,nw​ − 3 sw + 1⌋ 分别为 mh 和 mw,再经过一个 channel1 × 3 × 3 的卷积核,输出的空间维度即为 channel1 × ⌊mh​ − 3​ sh + 1⌋ × mw​ − 3 sw + 1⌋。

  • 当 s== sw == 1 时,最终输出的空间维度为 channel1 × nh - 4  × n- 4,将 s== sw == 1 带入维度输出公式并与 nh - 4,n- 4 分别联立,可以得到 kh == kw == 5。即两个3 × 3卷积核相当于一个5 × 5卷积核。
  • 当 s== sw == 2 时:
    1. 当 nh,nw 为偶数时,最终输出的空间维度为 channel1 × ⌊ nh / 2 ⌋ - 2  × ⌊ nw / 2 ⌋ - 2,将 s== sw == 1 带入维度输出公式并与 nh / 2 - 2nw / 2 - 2 分别联立,可以得到 kh == kw == n / 2 + 3。即两个3 × 3卷积核相当于一个 (n / 2 + 3) × (n / 2 + 3) 卷积核。
    2. 当 nh,nw 为奇数时,最终输出的空间维度为 channel1 × ⌊ nh / 2 ⌋ - 1  × ⌊ nw / 2 ⌋ - 1,将 s== sw == 1 带入维度输出公式并与 ⌊ nh / 2 ⌋ - 1,⌊ nw / 2 ⌋ - 1 分别联立,可以得到 kh == kw == ⌈ n / 2 ⌉ + 2。即两个3 × 3卷积核相当于一个 (⌈ n / 2 ⌉ + 2) × (⌈ n / 2 ⌉ + 2) 卷积核。

2.2 三个3 × 3卷积核相当于一个7 × 7卷积核

同理,当 s== sw == 1 时,个3 × 3卷积核相当于一个7 × 7卷积核。

 

2.3 总结

涉及多个卷积层的问题,要先一层层将输入空间维度、卷积核维度、步长代入,一层层计算到最后一层,算出最终输出的空间维度,将其作为结果,与初始输入空间维度联立,根据不同步长,可以得到相应的合并后卷积核。

 

posted @ 2021-11-15 18:17  MoSalah  阅读(1632)  评论(0编辑  收藏  举报