![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=1739402095-D45E96ssJ4X647JHpOtj1E5Tsyx9qeY0-0-d759e71a944d38920e6eaec38f02180e)
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P133_8498.jpg?sign=1739402095-OmPkLirb5RG9HuhNvmZrA3M9qTBOBiRY-0-c47eabee31568a207893da9cb8bb3646)
图4-3 VGG-16模型结构
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P133_8501.jpg?sign=1739402095-J6tdAhcMXwO2wUmto03YRKvC3kbZVztc-0-9870f6867db00332ff02841af4d56da6)
图4-4 全局池化层和全连接层结构
2.损失函数及模型优化
相比Flatten,GlobalAveragePooling2D可以大量减少模型参数,降低过拟合的风险,同时降低计算成本,这也是现在主流的一些CNN架构做法。在此基础上为了防止过拟合现象的产生,全连接层之前加入BatchNormalization层。
![](https://epubservercos.yuewen.com/631FC2/23721638301028906/epubprivate/OEBPS/Images/Figure-P134_24645.jpg?sign=1739402095-CO0597N7UTJHNiriToh5gYbUGubAZVwD-0-1b224762cd01b89c577e94950ec421b9)