1 引言

(1)全连接网络NN:每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出是预测的结果。
截屏2020-12-21 下午7.32.12.png
待优化的参数过多,容易导致模型过拟合
实际应用中会先对原始图像进行特征提取,再把提取到的特征喂给全连接网络。

2 卷积的概念

卷积可被认为是一种有效提取图像特征的方法
一般会用一个正方形卷积核,遍历图片上的每个点,图片区域内,相对应的每一个像素点,乘以卷积核内相对对应点的权重,求和,再加上偏置。
CNN.gif
输出图片边长 = (输入图片边长-卷积核长 +1)/步长
此图中:(5-3+1)/ 1 =3

3 数据周围全零填充padding

有时候为了保证输入图片和输入图片一致,需要对输入的数据进行全零填充。
截屏2020-12-21 下午7.44.08.png

计算公式【北京大学】10 TensorFlow1.x的卷积神经网络CNN相关基础知识 - 图4

在TensorFlow框架中,用参数padding =’SAME’或padding = ‘VALID’ 表示
(3)TensorFlow计算卷积

tf.nn.conv2d(输入描述,eg,[batch,5,5,1]#5 5表示每张图片的分辨率大小5行5列,1表示通道数,如果是灰度图示1,如果是彩色图,有红绿蓝三种颜色,就是3通道 卷积核描述, eg.[3,3,1,16] 核滑动步长,eg.[1,1,1,1] padding= ‘VALID’ )

截屏2020-12-21 下午7.55.19.png

彩色图的卷积如下,图片包含了三个颜色分为三个信息,分别对它们进行卷积。
截屏2020-12-21 下午7.59.09.png
彩色图片的卷积实现如下

tf.nn.conv2d(输入描述,eg,[batch,5,5,3]#5 5表示每张图片的分辨率大小5行5列,1表示通道数,如果是灰度图示1,如果是彩色图,有红绿蓝三种颜色,就是3通道 卷积核描述, eg.[3,3,3,16]

核滑动步长,eg.[1,1,1,1]

padding= ‘VALID’

)

截屏2020-12-21 下午8.02.36.png

4 池化

池化用于减少特征数量;最大值池化可提取图片纹理,均值池化可保留背景特征
截屏2020-12-21 下午8.05.30.png
TensorFlow实现

  1. pool =tf.nn.max_pool(输入描述,eg.[batch,28,28,6])
  2. pool = tf.nn.avg_pool

截屏2020-12-21 下午8.07.04.png

5 舍弃Dropout

在神经网络训练的过程汇总,将一部分神经元按照一定概率从神经网络中暂时舍弃,使用时被舍弃的神经元恢复连接
截屏2020-12-21 下午8.09.46.png
TensorFlow实现

  1. tf.nn.dropout(上层输出,暂时舍弃的概率)
  2. if train: 输出 = tf.nn.dropout(上层输出,暂时舍弃的概率)

6 卷积NN

借助卷积核(kernel)提取特征后,送入全连接网络
CNN的主要模块如下
截屏2020-12-21 下午8.12.57.png
CNN模型非发展历史
Lenet5 —>AlexNet —>VGGNet —>…—>GooleNet—>ResNet