
本文共 2571 字,大约阅读时间需要 8 分钟。
参考论文:A guide to convolution arithmetic for deep learning
论文地址:http://arxiv.org/abs/1603.07285 等效卷积核大小计算:K=k+(k−1)∗(r−1) (k为原大小,K为等效大小, r 为 dilation) -> 无空洞时dilation为1
注意: floor(x-1)//2 + 1 == x//2 <- 当且仅当 x为偶数! 这种padding出现在ResNet中的downsample中
1. Convolution arithmetic
核心公式:(根据这个公式,各种卷积的output size的计算其实都是一类
卷 积 : o s i z e = i n s i z e + 2 p − k s t r i d e + 1 逆 卷 积 : o ′ = s ( i ′ − 1 ) + k − 2 p 卷积:o_{size} = \frac{in_{size} + 2p - k}{stride} + 1 \\ 逆卷积:o' = s(i' - 1)+k-2p 卷积:osize=strideinsize+2p−k+1逆卷积:o′=s(i′−1)+k−2p
i:input size
o:output size p:padding size k:kernel size1. No zero padding, unit strides
o = ( i − k ) + 1 o = (i-k)+1 o=(i−k)+1
2. Zero padding, unit strides
o = ( i + 2 p − k ) + 1 o = (i + 2p - k) + 1 o=(i+2p−k)+1
3. Half(same) padding, [unit strides - same padding必须要s=1, o = i]
要求:k=2n+1, p = floor(k/2) =n
o = i + 2 ∗ f l o o r ( k / 2 ) − k + 1 = i o = i + 2*floor(k/2) -k + 1 = i o=i+2∗floor(k/2)−k+1=i4. Full padding [o = i + p]
o = i + 2 ∗ ( k − 1 ) − k + 1 = i + ( k − 1 ) o = i + 2*(k-1) - k + 1 = i + (k-1) o=i+2∗(k−1)−k+1=i+(k−1)
5. No zero padding , non-unit strides
o = f l o o r ( i − k s ) + 1 o = floor(\frac{i-k}{s}) + 1 o=floor(si−k)+1
6. Zero padding, non-unit strides
o = f l o o r ( i + 2 p − k s ) + 1 o = floor(\frac{i+2p-k}{s})+1 o=floor(si+2p−k)+1
2. Pooling arithmetic
o = f l o o r ( i − k s ) + 1 o = floor(\frac{i-k}{s})+1 o=floor(si−k)+1
3. Transposed convolution arithmetic
这里相对较难,需要不断重复
试想,将输出展平作为列,输入展平作为行,矩阵的每个元素就是输入元素计算卷积时所使用的权重,这样一来便可以计算逆。
然后将输入矩阵展平为列向量X,将此权重矩阵与X做矩阵乘法,得到一个4维的列向量,随后resize为(2,2)的矩阵,即输出矩阵。
{ c o n v o l u t i o n : X ⋅ C = Y t r a n s p o s e d c o n v o l u t i o n : Y ⋅ C T = X \begin{cases} convolution: X \cdot C = Y \\ transposed\ convolution: Y \cdot C^T = X \end{cases} { convolution:X⋅C=Ytransposed convolution:Y⋅CT=X
1. No zero padding, unit strides, transposed(与前面进行对比)
o ′ = i ′ + ( k − 1 ) o' = i' + (k-1) o′=i′+(k−1)
2. Zero padding, unit strides, transposed
o ′ = i ′ + ( k − 1 ) − 2 p o' = i' + (k-1) - 2p o′=i′+(k−1)−2p
3. Half(same) padding, transposed
假定k=2n+1(即为奇数),p=floor(k/2) = n
o ′ = i ′ + ( k − 1 ) − 2 p = i ′ + 2 n − 2 n o' = i' + (k-1) - 2p = i' + 2n - 2n o′=i′+(k−1)−2p=i′+2n−2n4. Full padding, transposed
p = k-1
o ′ = i ′ + ( k − 1 ) − 2 p = i ′ − ( k − 1 ) o' = i' + (k-1) - 2p = i' - (k-1) o′=i′+(k−1)−2p=i′−(k−1)5. No zero padding, non-unit strides, transposed
假设o’-k能整除s
o ′ = s ( i ′ − 1 ) + k o' = s(i'-1) + k o′=s(i′−1)+k6. Zero padding, non-unit strides, transposed
假设o’+2p-k能整除s
o ′ = s ( i ′ − 1 ) + k − 2 p o' = s(i'-1)+k-2p o′=s(i′−1)+k−2p发表评论
最新留言
关于作者
