tensorflow2学习笔记 12卷积神经网络

相关概念

  • 卷积计算
    作用:特征提取
    计算方法:使用卷积核按照指定步长在卷积神经网路上进行滑动,遍历图像的特征点。卷积核与图像重叠的部分则对应元素相乘、求和之后再加上偏置项,得到输出特征的像素点。
    注意事项:
    1.卷积核的深度应当与输入图像的深度一致
    2.当前图使用多少卷积核就有多少输出特征图,当前层卷积核的个数决定了当前层输出特征图的深度
    api:
tf.keras.layers.Conv2D(
    filter = 卷积核个数,                               #卷积核个数决定输出特征图的深度
    kernel_size = (核高,核宽),
    strides=(纵向步长,横向步长)
    padding="same"(使用全零填充)/"vallid"(不使用)
    activation=激活函数种类如果后面使用bn则不填充
    input_shape = (高,宽,通道数)        #输入特征维度可以不写
)
  • 感受野
    输出特征图中的每个像素点在原始输入图片上映射区域的大小

两层33和一层55特征提取能力相同
但在参数数量和计算量上有差距
当输入特征边长大于10个像素时两层3*3比一层5*5计算量小,性能更优

  • 全0填充
    用于卷积计算保持输入特征的尺寸不变

  • 批标准化
    使用原因:卷积网络对0附近的数据更敏感,随着网络层数的增加,特征数据会出现偏离均值0的情况,标准化使得0重新成为均值。批标准化即对一个batch的数据进行标准化操作
    可引入参数:缩放因子和偏移因子,保证网络的非线性表达力
    api

tf.keras.layers.BatchNormalization()
  • 池化
    用于减少特征数据量
    分为最大池化和均值池化
    最大池化可以提取图片文理
    均值池化可以保留背景特征(背景特征?)
    api
tf.keras.layers.MaxPool2D(
    pool_size=(核高,核宽),
    strides = (纵向步长,横向步长),
    padding='same' or 'valid'
)
#平均池化
AveragePooling2D
  • 舍弃
    将一部分神经元按照一定的概率从神经网络中暂时舍弃,神经网络使用时再恢复使用,用于缓解过拟合问题
    api
tf.keras.layers.Dropout(神经元被舍弃的概率)
  • 提取特征的常用步骤
    卷积 C
    批标准化 B
    激活 A
    池化 P
    舍弃 D
    一个常用实现过程
model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(6,kernel_size=(3,3),padding='same'),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.MaxPool2D((2,2),2,padding='same'),
    tf.keras.layers.Dropout(0.2)
])

你可能感兴趣的:(tensorflow2学习笔记 12卷积神经网络)