神经网络之图解CNN
前言
CNN 主要用于处理图像、自然语言等二维/三维、对平面感知要求较高的数据,具有局部感知能力(卷积功能,即矩阵的点乘)和空间不变性(滤镜(filter)的权重不变),而 DNN 则更加通用,可用于各种类型的数据处理任务,特别是高维度、非线性、复杂性强的数据。在实际应用中,选择恰当的网络结构和参数设置非常重要。
CNN主要由四个层结构构成:输入层(Input Layer)、卷积层(Convolution Layer)、池化层(Pooling Layer)、全连接层(Fully Connected Layer)。其中输入层一般输入图像等三维数据。卷积层主要是用固定权重的滤镜(filter)对输入数据做矩阵点乘。池化层主要是对卷积层输出结果进行下采样,不改变卷积层输出结果的深度,只改变卷积层输出的高和宽的维度,使得保留主要特征(可以避免过拟合)的同时,加快运算速度。全连接层是对卷积层和池化层提取的主要特征进行加权求和和非线性变化,最终得到分类结果或回归结果。
一、卷积层(Convolution Layer)是什么?
卷积层有三个重要元素,depth(深度)、stride(步长)和zero_padding(0填充)。其中,depth是滤镜(filter)的个数,决定卷积层输出结果的depth(深度)。stride是步长,决定卷积层的输入数据中的平面数据滑动多少次滑到边缘。zero-padding是0填充,是在外卷积层的输入数据中的平面数据外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,即为了总长能被步长整除。
卷积层的具体计算如下图
二、池化层(Pooling Layer)是什么?
池化层分为最大池化层和平均池化层。池化层具体计算如下图