目录
前言
三、卷积神经网络CNN——层层搭建
1.卷积层Convalution:特征提取
2.池化层pooling:减小数学量、降低维度且防止过拟合
3.Flatten层:用来将输入“压平”,即把多维的输入一维化
4.全连接层Dense:对先前卷积中提取的特征的非线性组合
5.dropout层:防止过拟合
上一篇了解了卷积神经网络结构,本章将分享“如何层层搭建卷积神经网络CNN”。
卷积的基本操作原理:
卷积核kernel在image原始图像(感受页)上滑动,对应元素相乘后相加得到第一个output图(feature map)。
创建卷积层:如果卷积层是网络的第一个层级,则包含input_shape参数;不是则不包含。
from keras.layers import Conv2D
Conv2D(filters, kernel_size, strides, padding, activation='relu', input_shape)
filters: 过滤器数量
kernel_size:指定卷积核的大小
strides: 卷积步伐stride,如果不指定任何值,则strides设为1
padding: 选项包括'valid'和'same',就是我们认为的扩充图片, 在图片外围补充一些像素点,把这些像素点初始化为0。
默认值为'valid'。
valid:是不填充,直接计算输出
same:是填充,填充大小, p = (f-1)/2;
padding的用途:
(1)保持边界信息,如果没有加padding的话,输入图片最边缘的像素点信息只会被卷积核操作一次,但是图像中间的像素点会被扫描到很多遍,那么就会在一定程度上降低边界信息的参考程度,但是在加入padding之后,在实际处理过程中就会从新的边界进行操作,就从一定程度上解决了这个问题。
(2)可以利用padding对输入尺寸有差异图片进行补齐,使得输入图片尺寸一致。
(3)卷积神经网络的卷积层加入Padding,可以使得卷积层的输入维度和输出维度一致。
(4)卷积神经网络的池化层加入Padding,一般都是保持边界信息和(1)所述一样。
activation: 通常为'relu',如果不指定任何值,则不应用任何激活函数,通常应该向网络中每个卷积层添加一个Relu激活函数。
input_shape: 指定输入的高度、宽度和深度=(image_width ,image_height ,color channels)
常用的方法是选取局部区域的最大值或者平均值。
创建池化层:
from keras.layers import MaxPooling2D
MaxPooling2D(pool_size, strides, padding)
pool_size:指定池化窗口高度和宽度的数字
strides:垂直和水平stride,默认参数为pool_size
padding:选项包括'valid'和'same',默认参数为'valid'
常用在卷积层到全连接层的过渡。
创建Flatten层:
layers.Flatten()
创建全连接层:当dense层是输入层时还需要有input_shape参数
keras.layers.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
(1)当全连接层为输入层时,要包含input_shape,用'sigmoid'激活函数
(2)当全连接层为中间层时,用'sigmoid'激活函数
(3)当全连接层为输出层时,用'softmax'激活函数
Dropout将在训练过程中每次更新参数时按一定概率(rate)随机断开输入神经元
rate:0~1的浮点数,控制需要断开的神经元的比例
noise_shape:整数张量,为将要应用在输入上的二值Dropout mask的shape,例如你的输入为(batch_size, timesteps, features),并且你希望在各个时间步上的Dropout mask都相同,则可传入noise_shape=(batch_size, 1, features)。
seed:整数,使用的随机数种子
创建dropout层:
keras.layers.core.Dropout(rate, noise_shape=None, seed=None)
以上就是卷积神经网络CNN框架层的创建方式,也可以采用Model.add()方式添加层。