目标
- 介绍卷积和反卷积的关系
- 明白 input shape, kernel shape, zero padding, strides , out shape 在卷积,池化,反卷积的关系
1 介绍
1.1 离散卷积
- 神经网络:放射变换, 输入数组,在乘以一个矩阵加上一个偏置后,得到一个输出。
- 输入数据类型:图片、声音其他等,都满足多个维度存储,有一个以上的轴来排序数据,并且有一个以上的通道来表述数据。
- 缺点:没有保存其拓扑信息
- 离散卷积:线性变换,保存了拓扑信息(数据的排序)
- 稀疏:一些输入单元信息作用于一个输出单元信息
- 重复参数:kernel作用于输入数据的不同位置
- 输入:input feature maps 输出:output feature maps
- 对于input feature maps ,可以使用不同的kernels,获取多层的output feature maps
- 用kernel的集合来定义离散卷积:(n, m, k1,…kN)
- n:input feature maps的数量
- m:output feature maps的数量
- :第j个维度kernel的大小
- N: N个维度的卷积,常见的二维卷积
- 对于第j个维度,output feature maps(oj)的大小影响元素
- :input featur maps 第j个维度的大小
- :kernel 第j个维度的大小
- :stride(步幅)第j个维度的大小
- :zero-padding(补零)第j个维度的大小
- 计算公式如下
- 步幅(stride):组成二次抽样
- 比如说s=2,可以看做是s=1的中,只取偶数的实现。
1.2 池化
- 池化:通过一些对子区域的总结(比如平均、最大值),减小feature maps 的大小(类似离散卷积,把线性操作换成其他的函数)
- 对于第j个维度,经过池化输出(oj)的大小影响元素
- :input featur maps 第j个维度的大小
- :池化窗口第j个维度的大小
- :stride(步幅)第j个维度的大小
2 卷积计算(i, k, s, p)
- 假设:
- 2-D discrete convolutions (N= 2)
- square inputs (i1=i2=i)
- square kernel size (k1=k2=k)
- same strides along both axes (s1=s2=s)
- same zero padding along both axes (p1=p2=p)
2.1 zero padding = 0 and strides = 1
2.2 zero padding != 0 and strides = 1
half padding (input size = ouput size )
full padding
2.3 zero padding = 0 and strides > 1
2.4 zero padding != 0 and strides > 1
如果j = i + a, a >0 and a < s,那么以j为输入的大小计算的输出的大小 = 以i为输入的大小计算的输出的大小
3. 池化计算
4. 反卷积计算
- 假设:
- 2-D discrete convolutions (N= 2)
- square inputs (i1=i2=i)
- square kernel size (k1=k2=k)
- same strides along both axes (s1=s2=s)
- same zero padding along both axes (p1=p2=p)
4.1 卷积作为一种矩阵操作
- 例如当i=4,k=3,s=1,p=0:
- 可以将输入矩阵平铺成(16,1)的矩阵X
- kernel平铺成(4,16)的矩阵C
- 最终的结果为Y= CX,即一个(4,1)的矩阵,再resize为(2,2)
- 卷积的正向过程是乘以了 ,反向过程乘以了
4.2 反卷积
- transposed convolution; fractionally strided convolution; deconvolution
- kernel 决定了卷积,但是正向和反向的计算决定了是卷积还是反卷积
- 反卷积的正向过程是乘以了 ,反向过程乘以了
- 卷积是 , 反卷积是
4.3 zero padding = 0 and strides = 1 反卷积
- 卷积 i=4,k=3,s=1,p=0,所以o = 2
- 反卷积 i’=o,k’=k,s’=s,p’=k-1,所以o ‘= i’ + (k - 1)
4.4 zero padding != 0 and strides = 1 反卷积
- 反卷积k’=k,s’=s,p’=k-p-1,所以o ‘= i’ + (k - 1) -2p
- half padding, transposed
- 卷积
- 反卷积 k’=k,s’=s,p’=p
- ‘= i’ + (k - 1) - 2p = i’
- full padding, transposed
- 卷积
- 反卷积 k’=k,s’=s,p’=0
- ‘= i’ + (k - 1) - 2p = i’ - (k - 1)
4.5 zero padding = 0 and strides > 1 反卷积
- 卷积
- 反卷积 k’=k,s’=1,p’=k-1(输入的每个单元之间加了s-1个0)
- o’=s( i’- 1) + k
4.5 zero padding != 0 and strides > 1 反卷积
- 卷积
- 反卷积 k’=k,s’=1,p’=k-p-1(输入的每个单元之间加了s-1个0)
- if( i+2p-k) %s == 0 :
- o’=s( i’- 1) + k - 2p
- if( i+2p-k) %s!= 0
- 设 a = ( i+2p-k) mod s
- o’=s( i’- 1) + a + k - 2p
- if( i+2p-k) %s == 0 :
5. 扩展卷积 dilated convolution
- 约束因子 d:
- d = 1 :常规卷积
- d > 1: kernel每个单元格之间加入(d-1)个空的元素,计算公式
- 扩展卷积计算 输出大小
ps:
- 线性linear,指量与量之间按比例、成直线的关系,在数学上可以理解为一阶导数为常数的函数
- 非线性non-linear则指不按比例、不成直线的关系,一阶导数不为常数。
- 虽然以上介绍的是2维的且是正方形的,但是也可以推广到多维和非正方形。