1、通俗易懂理解卷积
- 图示理解神经网络的卷积
input: 3 * 5 * 5 (c * h * w)
pading: 1
步长: 2
卷积核: 2 * 3 * 3 * 3 ( n * c * k * k )
output: 2 * 3 * 3 ( c * h * w )
如下图所示:
2、深入理解卷积
首先需要理解caffe里面的im2col和col2im
然后 卷积层 其实和 全连接层 差不多了
2.1、理解im2col
- 图示理解im2col
input: 3 * 4 * 4 ( c * h * w )
卷积核: 1 * 3 * 3 * 3 ( n * c * h * w 只考虑一个卷积核的情况 )
output:1* ( 3 * 3 * 3 ) * ( 2 * 2 ) ( n * h * w )
如下图所示:
3、卷积层的实现
3.1、im2col转换前
input: 1 * c * h * w
卷积核: m * c * k * k
m 个卷积核
步长: stride
填充: pad
扩展: dilation
output: 1 * m * H * W
H = ( h + 2 * pad - dilation * ( k - 1 ) ) / stride + 1
W = ( w + 2 * pad - dilation * ( k - 1 ) ) / stride + 1
3.2、im2col转换后
input: 1 * ( c * k * k ) * ( H * W )
weight: m * (c * k * k)
bias: m * 1
output: 1 * m * H * W
-
则公式(即前向传播)为:output = input * weight + bias * 全1矩阵 ( 1 * H * W )
-
反向传播和全连接层一样(详细参考全连接层的推导):
- 梯度传递:bottom_diff = top_diff * weight
- 对w求导:weight_diff = top_diff * bottom + weight_diff(累积梯度)
- 对b求导:bias_diff = top_diff + bias_diff(累积梯度)