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

3.2 开始使用滤波器和参数共享

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

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

3.2 开始使用滤波器和参数共享

下面介绍卷积网络中最重要的部分:卷积层。在卷积层中,有对输入数据进行卷积的块(如滑动窗口)。该技术为每个块共享参数,以便可以在整个输入数据中检测块内的特征。块的大小称为内核大小或滤波器大小。综上所述,卷积层提取了整个特征集合内的局部特征。在图3.1 中用图像作为输入数据来对此加以说明。

输入数据可以包含多个不同的特征,所以这个技巧可以应用多次。这被称为滤波器数量或滤波器深度。简单地说,如果在图像数据上使用具有五个滤波器的卷积层,则卷积块尝试学习图像中的五个不同特征,例如鼻子、眼睛、嘴巴、耳朵和睫毛等的面部特征。虽然这些特征从来没有明确规定,但是网络本身试图学习有价值的特征。

对于CNN,建议使用越来越多的滤波器,例如每个卷积层的滤波器数量的逐层翻倍:32、64 和128。

在下面的方案中,将实现一个CNN 来对第2 章中使用的MNIST 图像进行分类。

如何去做…

1)导入所有必要的函数库:

2)加载MNIST 数据集:

3)重整训练数据来表示单通道图像输入:

4)标准化输入数据:

5)对标签进行独热编码(one-hot encode)一 :

6)定义CNN 体系结构:

7)设置网络超参数和回调函数:

8)训练模型:

9)在测试集上显示结果:

输出如图3.2 所示。

10)绘制错误分类的图像及其标签:

正如在输出中看到的那样,一些错误分类的例子其实很难预测。例如,实际标签为8,而预测为9 的第七个示例,如图3.3 所示。

这个模型的结果已经相当不错了。在深度有限的情况下(三个卷积层和一个全连接层),大约经过11 个周期,在测试集上获得了99.30%的精度。该模型拥有16 230 794 个可训练参数,并在NVIDIA Tesla K80 GPU 上以45s 左右的时间运行一个周期。据报道,一份最新的研究论文已经获得了0.23 的错误率(其对应99.77%的精度)。此模型使用了35 个深度神经网络的集合,包括图像增强。通过稍后讨论的一些附加技术,可以进一步提高模型测试得分。


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

51CTO读书频道二维码


51CTO读书会第9群:808517103

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

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

读 书 +更多

Fedora Core 5 Linux架站与网管

Linux出色的网络功能堪称当今操作系统中的佼佼者,无论在功能还是在支持能力上都有令人满意的表现。Linux内置的多个服务器,几乎包含了目前...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊