【注】内容来自MOOC人工智能实践TensorFlow笔记课程第七讲第一课
https://www.icourse163.org/learn/PKU-1002536002?tid=1002700003#/learn/content?type=detail&id=1004087267&sm=1

一、全连接神经网络(FC)回顾

之前做过的手写数字识别mnist使用的是全连接神经网络。

  • 全连接神经网络:每个神经元与前后相邻层的每一个神经元都有连接关系;输入是特征,输出是最终预测结果。
  • 实际相比于手写数字图片,对于高分辨率的三通道彩色图像,待优化的参数过多,容易导致模型过拟合。
  • 为了避免过拟合,往往不会将原始图片直接喂入全连接网络。实际应用中常常会对原始图像进行特征提取,提取到的特征再喂给全连接网络。

二、卷积神经网络(CNN)

1.卷积

  • 卷积是一种有效提取图像特征的方法。
    常用正方形卷积核,遍历图片上的每个点,一个点的例子如下:
    TensorFlow神经网络(七)卷积神经网络基础
  • 输出图片边长计算过程如下: TensorFlow神经网络(七)卷积神经网络基础
  • 计算公式:
    =(+1)/输出图片边长=(输入图片边长-卷积核长+1)/步长
    或:

outputsize=(WF+1)/Soutputsize = (W-F+1)/S

注意不能整除时向上取整。

2.全零填充padding

  • 在输入图片周围进行全零填充,以保证输出图片和输入的尺寸一致。

outputsize=(WF+2P)/S+1outputsize = (W-F+2P)/S+1

W:输入尺寸
F:卷积层尺寸
P:零填充的数量
S:步长

同样向上取整。

  • TensorFlow中,使用padding用:padding = 'SAME',不使用用:padding = 'VALID'

3.TensorFlow计算卷积

tf.nn.conv2d(
[batch, 5, 5, 1], # 输入描述:图片数,行,列,通道数
[3, 3, 1, 15], # 卷积核描述:行,列,通道数(=输入图片通道数),核个数(=卷积层输出通道数)
[1, 1, 1, 1], # 核滑动步长:固定1,横向滑动步长,纵向滑动步长,固定1
padding = 'VALID' # 使用padding用 'SAME',不使用 'VALID'
)
  • 对多通道图片求卷积

卷积核的深度 = 输入图片通道数

如三通道输入,则卷积核三个分别对应一张图片的三个输入通道,则一张RGB图片与一个三通道卷积核作用得到一个输出,而这张RGB图对每个卷积核都会得到一个输出,即一张图片对应的输出通道数等于卷积核的个数。

TensorFlow神经网络(七)卷积神经网络基础

4.池化pooling

  • 通过卷积提取的特征仍然数据量很大,通过池化减少特征数量。
① 最大池化 ——提取图片纹理
② 均值池化——保留背景特征

TensorFlow神经网络(七)卷积神经网络基础

# 最大池化
pool = tf.nn.max_pool(
[batch, 28, 28, 3], #输入:图片数,行分辨率,列分辨率,通道数
[1, 2, 2, 1], # 池化核(仅大小):固定1, 行分辨率,列分辨率,固定1
[1, 2, 2, 1], # 池化核滑动步长:固定1,横向滑动步长,纵向滑动步长,固定1 
padding = 'SAME' # 使用padding用 'SAME',不使用 'VALID'
)

# 平均池化
pool = tf.nn.avg_pool(
[batch, 28, 28, 3], #输入:图片数,行分辨率,列分辨率,通道数
[1, 2, 2, 1], # 池化核(仅大小):固定1, 行分辨率,列分辨率,固定1
[1, 2, 2, 1], # 池化核滑动步长:固定1,横向滑动步长,纵向滑动步长,固定1 
padding = 'SAME' # 使用padding用 'SAME',不使用 'VALID'
)

5.舍弃dropout

  • 在训练神经网络时,一部分神经元以一定的概率被暂时舍弃。
  • 使用神经网络时,恢复这些舍弃的神经元的连接。
  • 可以有效减少过拟合
  • 常常在前向传播构建神经网络时,使用dropout来减小过拟合,加快模型的训练速度。
    TensorFlow神经网络(七)卷积神经网络基础
tf.nn.dropout(上层输出,暂时舍弃的概率)

dropout一般会放在全连接网络中,如上,参数训练过程中,有指定概率的神经元被随机置零,它们不参加当前轮的参数优化。

三、卷积神经网络和全连接神经网络的关系

  • 卷积NN就是借助卷积操作,对输入图片进行特征提取,再把提取到的特征喂入全连接网络。
  • CNN由两部分组成:
    ① 对原始输入图片进行特征提取(若干次卷积、**和池化);
    ② 将得到的特征信息喂入全连接神经网络。
    TensorFlow神经网络(七)卷积神经网络基础
  • CNN经典结构:
    Lenet-5
    Alenet
    VGGNet
    GoogleNet
    ResNet
    网络结构均是以卷积、**、池化、全连接这4种操作为基础进行扩展。

相关文章:

  • 2021-08-13
  • 2021-12-19
  • 2021-01-31
  • 2021-12-19
  • 2021-12-19
  • 2021-12-19
  • 2021-08-13
猜你喜欢
  • 2021-12-19
  • 2021-11-01
  • 2021-12-29
  • 2021-12-29
  • 2021-11-17
  • 2021-12-19
  • 2021-04-06
相关资源
相似解决方案