卷积网络基础部分

  • 卷积计算(Convolutional)
  • 感受野(Receptive Field)
  • 全零填充(Padding)
  • TF描述卷积计算层
  • 批标准化(BN)
  • 池化(Pooling)
  • 舍弃(Dropout)
  • 卷积神经网络


卷积计算(Convolutional)

前面学习基于全连接网络
全连接NN:每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出为预测的结果

待优化参数过多会导致模型过拟合,实际应用中会对原始图像进行特征提取,再把提取到的特征送给全连接网络。

卷积计算:卷积可认为是一种有效的提取图像特征的方法。一般会用一个正方形的卷积核,按指定步长,卷积核会与输入特征图出现重合区域,重合区域对应元素相乘、求和再加上偏置项得到输出特征的一个像素点。

输入特征图的深度(channl数),决定了当前层卷积核的深度;当前层卷积核的个数,决定了当前输出特征图的深度

深度卷积迁移学习网络_卷积


卷积计算 即 对图像的 特征提取

感受野(Receptive Field)

感受野:卷积神经网络各输出特征图中的每个像素点,在原始图片上映射区域的大小

深度卷积迁移学习网络_深度学习_02


在这里,使用两层33卷积核和使用一层55卷积层的效果一致,输出特征图的感受野为5。

对比:

卷积层

参数量

2层3*3

9+9=18

一层5*5

5*5=25

计算量在x>10(输入特征图xx,步长为1)时,两层33卷积核运算量小

全零填充(Padding)

为了卷积运算的完整、规则,在输入特征图周围补零的操作

补零特征由输入特征图的边长、步长、卷积核决定

深度卷积迁移学习网络_卷积_03

TF描述卷积计算层

tensorflow里给出了卷积计算层

tf.keras.layers.Conv2D([filters=卷积核个数,
kernel_size=卷积核尺寸,
strides=滑动步长,
padding="same"/"valid"全零填充,
activation="relu"/"sigmoid"等,#有BN则此处不写
input_shape=(高,宽,通道数)])

深度卷积迁移学习网络_卷积_04

批标准化(BN)

标准化:使数据符合均值为0,标准差为1的分布

批标准化:对一小批数据(batch),做标准化处理

深度卷积迁移学习网络_深度卷积迁移学习网络_05


TF也给出了批标准化的方法

tf.keras.layers.BatcgNormalization()

深度卷积迁移学习网络_深度卷积迁移学习网络_06

池化(Pooling)

池化用于减少特征数据量

最大池化层可提取图片纹理,均值池化可保留背景特征

深度卷积迁移学习网络_深度学习_07


TF描述池化

深度卷积迁移学习网络_卷积_08

舍弃(Dropout)

在神经网络训练中,将一部分神经元按照一定概率从神经网络中暂时舍弃。神经网络使用时,被舍弃的神经元恢复连接

TF描述池化

深度卷积迁移学习网络_卷积神经网络_09

卷积神经网络

卷积神经网络:借助卷积核提取特征后,送入全连接网络
主要模块:
卷积(Convolutional)
批标准化(BN)
激活(Activation)
池化(Pooling)
舍弃(Dropout)

卷积就是特征提取器,就是CBAPD

model = tf.keras.models.Sequential([Conv2D(filter=6,kernel_size=(5,5),padding='same'), #卷积层
BatchNormalization(),  #BN层
Activayion('relu'),   #激活层
MaxPool2D(pool_size=(2,2),strides=2,padding='same') ,#池化层
Dropout(0.2),#舍弃层])

深度卷积迁移学习网络_卷积神经网络_10