要利用keras实现cnn模型,以下内容很重要:
(1)原始数据处理。 (可输入的格式)
(2)构建卷积层、池化层、全连接层
)3) size相对于各层输入数据的变化。
1 .库部署
np_utils库的功能应该类似于对标签进行one-hot处理。
from models导入序列是keras的构建模型框架,Sequential是一系列网络层按顺序排列的堆栈。
用. add ()层叠几个网络层以构成模型。
from models.layers import dense、activation、convolution2D、maxpooling2d和flatten是导入的模型的每个网络层。
dense :全连接神经网络层;
激活:激活函数;
转换2d :卷积层
最大轮询2d :池化层
(Flatten )用于数据的多维变换,实现从卷积层到全连通层的变换。
优化器是模型的优化程序,对学习率的处理主要取决于优化程序。
2 .输入数据的处理
训练集的输入格式为600002828,共指向60000个样本。 每个样本是2828个像素图像。 因为数据是黑白数据,所以没有RGB维度。
CNN模型的标准格式为出入纵横*高,高度实际上是图像的颜色,修改数据没有高度一维度,所以在reshape中增加一个维度。
由于缺少RGB维,在原始数据的采样数之后添加了颜色维。 因为是黑白图像,所以这个维度是1。 其实高度是1。
除以255是为了归一化。 其实也有其他方法。 标准化。
3 .模型构建
model=Sequential ()是使用keras框架的一个方便之处,它只需要用add方法将网络中的每个层相加,然后根据每个层进行设计,最终用add构建模型。
第一个卷积层:
卷积层中最重要的是滤波器,通过使用滤波器提取原始数据的特征。 因此,在卷积层中,相对于滤波器设计,有个数、尺寸、填充。 常见的过滤器大小为33或55。 个数从少到多加倍。
在该情况下,过滤器的个数为32,尺寸为5*5。
启用函数
在卷积层之后添加激活函数。 激活函数有sigmoid、tanh等多种。
池化层
池化层主要对卷积层提取的数据进行特征简化,其中包括最大池化、和平均池化。 池化后,原始数据大小的长宽将减半。 在此情况下,经过第一次池化,长宽比从2828变为1414。
第二层卷积层、激活函数、池化层。
弄平
提取特征后,需要输入所有连接层。 但是,由于卷积后得到的是多维图像(多个filter,有几个filter就有几张图像),所以不能直接输出到全连接层dense,所以需要将中途得到flatten的多个特征图平坦化。
所有连接层
让我们把最后提取的特征在全连通层降低一个特征维度。 然后,输出类别数。
优化程序
最后定义优化程序其实是定义学习率。
编译模型
设计模型的损耗函数。 这种情况的损失函数是categorical_crossentropy (交叉熵损失函数),多分类使用交叉熵损失函数。