本文是接着上一篇深度学习之 11 卷积神经网络实现_水w的博客-CSDN博客
目录
空洞卷积
1 优点与适用性
2 存在的问题
?空洞卷积存在网格效应
?远距离的点之间的信息可能不相关
?解决方法
【#|深度学习之 11 空洞卷积的实现】?满足HDC条件的空洞卷积叠加演示:dilation rate [1, 2, 5] with 3 x 3 kernel
3 使用PyTorch实现空洞卷积
?空洞卷积的实现 实现dilation为1,2,5的三层空洞卷积
?空洞卷积实验结果
空洞卷积
- 灰色部分为卷积核权重,与左侧相同;白色部分为空,值为0
- dilation rate:空洞率,空洞卷积权 重值的 间隔 为dilation rate - 1
- 当空洞率为1时,退化为普通卷积
- 空洞后的卷积核的空间(感受野)大
文章图片
文章图片
1 优点与适用性
?在不增加参数的情况下 增大感受野, 适用于图片size较大,或需要快速感受全局信息的情况?通过设置不同的dilation rate捕获 多尺度 上下文信息,适用于需要捕获图片的多层次的情况,如语义分割等。卷积核为大小2,四层卷积,普通卷积可以覆盖5个像素点, 而使用空洞卷积可以覆盖16个像素点
文章图片
文章图片
但是因为空洞卷积的特殊性,我们其实并不能够项普通卷积一样拿来就用。2 存在的问题
?空洞卷积存在网格效应 ?远距离的点之间的信息可能不相关?空洞卷积存在网格效应
三层空洞卷积 dilation=2只获取到了一些点的信息, 并没有获取到全部的信息。实际上就算我们不断的继续堆叠最顶点的这个点,只用到了部分结点,我们还是不能够获取到全部底层的信息。
右侧的序列上, 如果我们不进行填充,那么在3层之后就已经到头了,没有办法再进行卷积了。
文章图片
?远距离的点之间的信息可能不相关
空洞卷积虽然是被设计用来捕获更 远距离 的信息的,但是这样一味的使用大的dalition就会 忽略掉近距离的信息 ,如何能 同时处理远距离信息和临近区域的信息 是设计好空洞卷积的关键之一。点B明显与近距离的点A更相关,与左上角的点C 关系不大,如果dalition过大则容易忽略点A的信息而降低模型效果。
文章图片
?解决方法
文章图片
?满足HDC条件的空洞卷积叠加演示:dilation rate [1, 2, 5] with 3 x 3 kernel
文章图片
文章图片
文章图片
3 使用PyTorch实现空洞卷积
文章图片
?空洞卷积的实现 实现dilation为1,2,5的三层空洞卷积
直接套用之前实现的普通卷积的代码,定义了这3层卷积,对每一层卷积都指定它的空洞率分别为1,2和5,然后在这个前向传播的过程中也是和之前的过程是一致的,这里不过多叙述。
文章图片
?空洞卷积实验结果
使用空洞卷积之后,测试集的loss曲线在大概40轮左右的时候,就不再下降了,甚至有点稍微上升的情况,就说明在40轮的时候,模型可能有点过拟合。那么最后我们这个测试集的准确率也到了82%左右,而对于之前设计的普通卷积的准确率大概是不到80%,。
- 模型在训练集上可以达到一个较低的loss和较高的准确率;
- 在大约40轮后测试集的Loss就处于波动状态甚至有些上升,说明模型出现了过拟合;
- 测试集的平均准确率达到了82.92%,说明当前模型在cifar-10上进行分类的效果良好;
文章图片
但是并不能够说明这个空洞卷积在任何时候都比普通卷积都要好。需要依据任务和数据的不同,效果也会有所差距。
推荐阅读
- 神经网络与深度学习|【神经网络与深度学习】CIFAR10数据集介绍,并使用卷积神经网络训练图像分类模型——[附完整训练代码]
- 五|5.6 Keras卷积神经网络练习 cifar10数据集
- TensorFlow深度学习|TensorFlow学习笔记之CIFAR10与VGG13实战
- 人工智能|21个项目玩转深度学习(基于TensorFlow的实践详解02—CIFAR10图像识别)
- 机器学习|深度学习经典数据集汇总
- python|CIFAR-10 图像识别
- tensorflow2.0|Tensorflow 2 实战(kears)- CIFAR10自定义网络、模型加载与保存实战
- 深度学习|【深度学习】从LeNet-5识别手写数字入门深度学习
- 深度学习|【深度学习】基于tensorflow的服装图像分类训练(数据集(Fashion-MNIST))