gitchat训练营15天共度深度学习入门课程笔记(十一)
基于全连接层(Affine 层)的网络的例子:
基于 CNN 的网络的例子,新增了 Convolution 层和 Pooling 层(用灰色的方块表示):
CNN常见结构:
- “Convolution - ReLU -(Pooling)”(Pooling 层有时会被省略)
- 靠近输出的层中使用“Affine - ReLU”
- 最后的输出层中使用“Affine - Softmax”
7.2 卷积层
- 特征图(feature map):卷积层的输入输出数据
- 输入特征图(input feature map):卷积层的输入数据
- 输出特征图(output feature map):卷积层的输出数据
7.2.2 卷积运算
- 卷积运算相当于图像处理中的“滤波器运算”
- 用“”符号表示卷积运算
卷积计算的过程:
上面的卷积运算以1的步幅在输入数据上向右向下滑动滤波器的窗口,每滑动一次就将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算)。然后,将这个结果保存到输出的对应位置。
偏置存在的情况:
7.2.3 填充
- 填充(padding):在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如 0 等)(为了调整输出的大小,防止输出越来越小,变为1)
- 幅度为 1 的填充:指用幅度为 1 像素的 0 填充周围
- 增大填充后,输出大小会变大
例子如下:
7.2.4 步幅
- 步幅(stride):应用滤波器的位置间隔
- 增大步幅后,输出大小会变小
输出数据大小计算
- 输入大小为
(H, W)
- 滤波器大小为
(FH, FW)
- 输出大小为
(OH, OW)
- 填充为
P
,步幅为S
上式要可以除尽,否则需要报错,在一些深度学习框架中会四舍五入,不需要报错。
7.2.5 3 维数据的卷积运算
当有了纵深(通道方向)时,卷积计算的例子:
卷积计算:
- 按通道进行输入数据和滤波器的卷积运算,并将结果相加
- 输入数据和滤波器的通道数要设为相同的值
7.2.6 结合方块思考
结合长方体来思考卷积运算:
- 通道数为 1 的输出数据:
3. 通道数为FN的输出数据:
应用多个滤波器就可以得到多个卷积计算的输出。
- 有偏置的情况:
CNN的处理流:用多个滤波器得到了FN个输出数据,即(FH,OH,OW)的数据方块,将该方块传递给下一层继续处理。
7.2.7 批处理
- 卷积运算批处理:各层间的数据按 (batch_num, channel, height, width) 的顺序保存为 4 维数据
一次对 N 个数据进行卷积运算的例子:
end
- 原书为《深度学习入门 基于Python的理论与实现》作者:斋藤康毅
人民邮电出版社 - 本文章是gitchat的《陆宇杰的训练营:15天共读深度学习》1的课程读书笔记
- 本文章大量引用原书中的内容和训练营课程中的内容作为笔记