![AI源码解读:数字图像处理案例(Python版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/118/44510118/b_44510118.jpg)
上QQ阅读APP看书,第一时间看更新
AI源码解读.数字图像处理案例:Python版
4.3.2 模型编译主体
序贯模型是函数式模型的简略版,为最简单的线性、从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠。Keras实现了很多层,包括核心层、卷积层、池化层等非常丰富有趣的网络结构。本项目通过将层的列表传递给构造函数,创建序贯模型。在完成对下载数据集中的图像预处理后,用作该模型的训练集、测试集和验证集。鉴于目标域和源域中的数据特征相同,且源域中的数据比目标域中的数据更丰富,可以使用基于ImageNet训练出的VGG-16模型,并根据需要,对模型参数做适当修改。具体实现过程如下:
1.定义模型结构
在搭建神经网络时,使用VGG-16模型的特征参数,将最后一层卷积层的输出直接输入该模型中,并在此模型上添加一个全局平均池化层和一个全连接层。其中,全连接层使用了softmax激活函数。本项目使用的神经网络模型共有68229个参数。获取链接为https://s3-us-west-1.amazonaws.com/udacity-aind/dog-project/DogVGG16Data.npz,如图4-3所示。
在VGG-16模型后添加全局池化层和全连接层,并通过函数VGG-16_model.summary()输出结构信息,如图4-4所示。
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P132_24642.jpg?sign=1738861388-ZEqlmf5uUMyYz6kPnJun4IKfBk5j2D2P-0-b5a20cd31b597efa5327f7067a599cec)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P133_8498.jpg?sign=1738861388-Om5I3LDRU3pG3tGeLxQryessjQpafYqY-0-a09043eaac277befed5f76d2ca70c5d0)
图4-3 VGG-16模型结构
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P133_8501.jpg?sign=1738861388-y4QrX0FIk1war5evqKDd5jG6d2V9dEeR-0-979d3b76d81903bf697ce2f19c63570d)
图4-4 全局池化层和全连接层结构
2.损失函数及模型优化
相比Flatten,GlobalAveragePooling2D可以大量减少模型参数,降低过拟合的风险,同时降低计算成本,这也是现在主流的一些CNN架构做法。在此基础上为了防止过拟合现象的产生,全连接层之前加入BatchNormalization层。
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P134_24645.jpg?sign=1738861388-mZZCn5XVSPV6kGbfcvsJbd79LHlmTmEg-0-71f6447fbc388dc9a7703543e18710b8)