卷积网络基础部分
- 卷积计算(Convolutional)
- 感受野(Receptive Field)
- 全零填充(Padding)
- TF描述卷积计算层
- 批标准化(BN)
- 池化(Pooling)
- 舍弃(Dropout)
- 卷积神经网络
卷积计算(Convolutional)
前面学习基于全连接网络
全连接NN:每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出为预测的结果
待优化参数过多会导致模型过拟合,实际应用中会对原始图像进行特征提取,再把提取到的特征送给全连接网络。
卷积计算:卷积可认为是一种有效的提取图像特征的方法。一般会用一个正方形的卷积核,按指定步长,卷积核会与输入特征图出现重合区域,重合区域对应元素相乘、求和再加上偏置项得到输出特征的一个像素点。
输入特征图的深度(channl数),决定了当前层卷积核的深度;当前层卷积核的个数,决定了当前输出特征图的深度
卷积计算 即 对图像的 特征提取
感受野(Receptive Field)
感受野:卷积神经网络各输出特征图中的每个像素点,在原始图片上映射区域的大小
在这里,使用两层33卷积核和使用一层55卷积层的效果一致,输出特征图的感受野为5。
对比:
卷积层 | 参数量 |
2层3*3 | 9+9=18 |
一层5*5 | 5*5=25 |
计算量在x>10(输入特征图xx,步长为1)时,两层33卷积核运算量小
全零填充(Padding)
为了卷积运算的完整、规则,在输入特征图周围补零的操作
补零特征由输入特征图的边长、步长、卷积核决定
TF描述卷积计算层
tensorflow里给出了卷积计算层
tf.keras.layers.Conv2D([filters=卷积核个数,
kernel_size=卷积核尺寸,
strides=滑动步长,
padding="same"/"valid"全零填充,
activation="relu"/"sigmoid"等,#有BN则此处不写
input_shape=(高,宽,通道数)])
批标准化(BN)
标准化:使数据符合均值为0,标准差为1的分布
批标准化:对一小批数据(batch),做标准化处理
TF也给出了批标准化的方法
tf.keras.layers.BatcgNormalization()
池化(Pooling)
池化用于减少特征数据量
最大池化层可提取图片纹理,均值池化可保留背景特征
TF描述池化
舍弃(Dropout)
在神经网络训练中,将一部分神经元按照一定概率从神经网络中暂时舍弃。神经网络使用时,被舍弃的神经元恢复连接
TF描述池化
卷积神经网络
卷积神经网络:借助卷积核提取特征后,送入全连接网络
主要模块:
卷积(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),#舍弃层])