相关概念
- 卷积计算
作用:特征提取
计算方法:使用卷积核按照指定步长在卷积神经网路上进行滑动,遍历图像的特征点。卷积核与图像重叠的部分则对应元素相乘、求和之后再加上偏置项,得到输出特征的像素点。
注意事项:
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)
])