15天共读深度学习Day11
卷积神经网络 CNN convolutional neural network
CNN被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以CNN为基础。
(1)全连接
此图是基于全连接层(Affine层)的网络的例子。
神经网络中,相邻层的所有神经元之间都有连接,这称为全连接(fully-connected)
全连接的神经网络中,Affine层后面跟着**函数ReLU层(或者sigmoid层)这里堆叠了4层“Affine-ReLU”组合,然后第五层是Affine层,最后由softmax层输出最终结果(概率)
(2)CNN
上图是CNN的一个例子。基于CNN的网络的例子:新增了convolution层和pooling层
之前的“Affine-ReLU”连接被替换成“Convolution-ReLU-(Pooling)”连接(Pooling层有时会被省略)
还需要注意的是,靠近输出的层中使用了之前的“Affine-ReLU”组合,此外,最后的输出层中使用了之前的“Affine-Softmax”组合,这都是一般的CNN中比较常见的结构。
(3)全连接层存在的问题与CNN的改进
在全连接中,数据的形状被忽视了。比如,输入数据是图像时,图像通常是高、长、通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据。所以无法利用与形状相关的信息。
而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3维数据的形式接受输入数据,并同样以3维数据的形式输出至下一层。因此,在CNN中,可以(有可能)正确理解图像等具有形状的数据。
另外,CNN中,有时将卷积层的输入输出数据称为特征图(feature map)其中,卷积层的输入数据称为输入特征图(input feature map)输出数据称为输出特征图(output feature map)
(4)卷积运算
卷积运算的计算顺序
加偏置后
填充
在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0),这称为填充(padding)是卷积层中经常会用到的处理。使用填充主要是为了调整输出的大小。
步幅(stride)
应用滤波器的位置间隔称为步幅
步幅为2的例子:
综上,增大步幅后,输出大小会变小。增大填充后,输出大小会变大。
(5)3维数据的卷积运算
(6)结合方块思考
通道数C channel 高度 H height 长度 W width
加批处理之后