|
|
51CTO旗下网站
|
|
移动端

3.5 理解填充和步长

《Python深度学习实战:75个有关神经网络建模、强化学习与迁移学习的解决方案》第3章卷积神经网络,本章重点介绍CNN 及其构建模块。在本章中,将提供有关CNN 中使用的技术和优化方案。本节为大家介绍理解填充和步长。

作者:程国建/周冠武 译来源:机械工业出版社|2018-09-01 10:36

3.5 理解填充和步长

到目前为止,已经使用网络的默认步长唯一。这表示模型将对每个轴上一个输入进行卷积(步长为1)。但是,当数据集在像素级别上包含较少的粒度信息时,可以尝试用更大的值作为步长。通过增加步长,卷积层在每个轴上跳过更多的输入变量,因此减少了可训练参数的数量。这可以加速收敛,而不会有太大的性能损失。

另一个可以调整的参数是填充。填充定义了如何处理输入数据(例如图像)的边界。如果没有添加填充,则只包含边界像素(在图像的情况下)。因此,如果期望边界包含有价值的信息,可以尝试向数据添加填充。这增加了可以在数据上进行卷积时使用的虚拟数据的边界。使用填充的好处是数据的维度在每个卷积层上保持相同,这意味着可以将更多的卷积层叠加在一起。在图3.5 中,可以看到带有零填充的步长为1 的示例,以及带有填充的步长为2 的示例。

对于填充和步长选择值没有一般的规则。这在很大程度上取决于数据的大小和复杂性,以及所使用的潜在预处理技术。接下来,将尝试不同的步长和填充设置,并比较模型的结果。使用的数据集包含猫和狗的图像,要执行的任务是对动物进行分类。

如何去做…

1)导入所有必要的函数库,如下所示:

2)加载文件名并输出训练集大小:

3)为了更好地理解数据集,绘制每个类中的三个例子,如图3.6 所示。

4)将数据集划分成一个训练集和一个测试集,如下所示:

5)训练集比较大,使用批生成器,这样就不必在内存中加载所有图像:

6)接下来,定义一个函数,为步长和填充创建一个给定参数的模型:

7)现在为每个设置定义一个模型,并且提取可训练参数的数量:

8)要输出模型的方案配置,可按下列步骤:

9)要使用早停技术,定义一个回调函数如下:


10)下一步,训练模型并存储结果:

11)可视化结果:

通过使用步长2,可训练参数的数量明显减少(当使用填充值10 305 697~102 561 时)。对于这个数据集,它显示出当使用步长值大于1 时没有性能损失。这是符合预期的,因为使用(调整后)100×100×3 图像作为输入。跳过每个方向的像素不应该太多地影响性能。填充和步长不同设置的性能比较如图3.7 所示。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

解密SEO:搜索引擎优化与网站成功战略

本书是作者根据十年网站营销经验,特别是搜索引擎优化(SEO)实现营销方面的技术和实践总结。本书帮助读者建立搜索营销的概念,分析搜索营...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
博聚网