1.CNN卷积神经网络介绍
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络(一个输入层,一个或多个隐藏层,一个输出层的神经网络,每个神经元都与前一层全连接),它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 它包括卷积层(convolutional layer)和池化层(pooling layer)。
卷积层:
数学上的卷积操作:
原图: 上图的绿色矩阵,这个是计算机眼中的图片。图片通过矩阵的方式进行表达。
卷积核: 上图的黄色矩阵,这个是卷积核,核的大小可以自定义,2x2、 3x3、5x5都可以的,卷积核里面的权值的不同,提取的特征图也不同,不同的核得到的不同的特征图。
计算方式:矩阵乘法。
特征图:上图粉色部分,卷积操作最后获得的结果。
卷积操作的作用:完成传统计算机视觉算法的功能,如滤波、强化、提取轮廓、模糊处理等,其实可以将卷积操作看做一种模板匹配的过程。卷积核就是模板,特征图就是就是这个模板匹配的结果显示。
池化层:
数学上的池化操作
取最大值,也可以取均值
池化操作的作用:获取粗粒度信息的过程,因此它可以将原始图像变小。这个过程模拟了人类从宏观角度来观察事物,这种模糊化操作将多个方格的原始图像压缩为一个点,从而忽略掉信息的作用。
2.项目介绍和技术关键点
项目介绍:
任务:将MINST数据集(如上,手写数字图像)识别为数字标签
网络结构:一层输入层,第一层卷积层,第一层池化层,第二层卷积层,第二层池化层,第一层特征层(全连接层),第二层特征层(全连接层),一层输出层。
项目步骤:1.数据集划分:对于这个项目,将数据集划分为三个部分:训练集、测试集、验证集,验证集的目的主要是在训练的过程中进行验证防止过拟合。因为数据量过大,所以需要采用批处理的形式,从而提高效率并且防止过拟合。2.数据处理:采用Pytorch自带的数据处理的包。3.构建网络,自定义ConvNet类,继承自nn.Module类。注意为防止过拟合,需使用dropout()函数。4.运行并测试模型,为了加速可以使用带cuda的gpu来跑,可以显著提高效率。最后绘制出训练损失曲线图: