深度学习之 11 空洞卷积的实现

这篇具有很好参考价值的文章主要介绍了深度学习之 11 空洞卷积的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文是接着上一篇深度学习之 11 卷积神经网络实现_水w的博客-CSDN博客

目录

空洞卷积

1 优点与适用性

2 存在的问题

 ◼  空洞卷积存在网格效应

 ◼  远距离的点之间的信息可能不相关

 ◼  解决方法

  ◼  满足HDC条件的空洞卷积叠加演示:dilation rate [1, 2, 5] with 3 x 3 kernel

3 使用PyTorch实现空洞卷积  

  ◼  空洞卷积的实现 实现dilation为1,2,5的三层空洞卷积

  ◼  空洞卷积实验结果


空洞卷积

  • 灰色部分为卷积核权重,与左侧相同;白色部分为空,值为0
  • dilation rate:空洞率,空洞卷积权 重值的 间隔 为dilation rate - 1
  • 当空洞率为1时,退化为普通卷积
  • 空洞后的卷积核的空间(感受野)大

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

1 优点与适用性

 ◼   在不增加参数的情况下 增大感受野, 适用于图片size较大,或需要快速感受全局信息的情况
 ◼   通过设置不同的dilation rate捕获 多尺度 上下文信息,适用于需要捕获图片的多层次的情况,如语义分割等。
使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

卷积核为大小2,四层卷积,普通卷积可以覆盖5个像素点, 而使用空洞卷积可以覆盖16个像素点

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

但是因为空洞卷积的特殊性,我们其实并不能够项普通卷积一样拿来就用。 

2 存在的问题

 ◼   空洞卷积存在网格效应
 ◼  远距离的点之间的信息可能不相关

 ◼  空洞卷积存在网格效应

三层空洞卷积 dilation=2

只获取到了一些点的信息, 并没有获取到全部的信息。实际上就算我们不断的继续堆叠最顶点的这个点,只用到了部分结点,我们还是不能够获取到全部底层的信息。 

右侧的序列上, 如果我们不进行填充,那么在3层之后就已经到头了,没有办法再进行卷积了。

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

 ◼  远距离的点之间的信息可能不相关

空洞卷积虽然是被设计用来捕获更 远距离 的信息的,但是这样一味的使用大的dalition就会 忽略掉近距离的信息 ,如何能 同时处理远距离信息和临近区域的信息 是设计好空洞卷积的关键之一。

点B明显与近距离点A更相关,与左上角的点C 关系不大,如果dalition过大则容易忽略点A的信息而降低模型效果。 

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn ◼  解决方法

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

  ◼  满足HDC条件的空洞卷积叠加演示:dilation rate [1, 2, 5] with 3 x 3 kernel

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

3 使用PyTorch实现空洞卷积  

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

  ◼  空洞卷积的实现 实现dilation为1,2,5的三层空洞卷积

直接套用之前实现的普通卷积的代码,定义了这3层卷积,对每一层卷积都指定它的空洞率分别为1,2和5,然后在这个前向传播的过程中也是和之前的过程是一致的,这里不过多叙述。 

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

  ◼  空洞卷积实验结果

  • 模型在训练集上可以达到一个较低的loss和较高的准确率;
  • 在大约40轮后测试集的Loss就处于波动状态甚至有些上升,说明模型出现了过拟合;
  • 测试集的平均准确率达到了82.92%,说明当前模型在cifar-10上进行分类的效果良好;

使用空洞卷积之后,测试集的loss曲线在大概40轮左右的时候,就不再下降了,甚至有点稍微上升的情况,就说明在40轮的时候,模型可能有点过拟合。那么最后我们这个测试集的准确率也到了82%左右,而对于之前设计的普通卷积的准确率大概是不到80%,。

使用torch.nn实现空洞卷积,要求dilation满足hdc条件(如1,2,5)且要堆叠多层并在至,# 深度学习,人工智能,神经网络,python,深度学习,cnn

 但是并不能够说明这个空洞卷积在任何时候都比普通卷积都要好。需要依据任务和数据的不同,效果也会有所差距。文章来源地址https://www.toymoban.com/news/detail-670464.html

到了这里,关于深度学习之 11 空洞卷积的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手动以及使用torch.nn实现logistic回归和softmax回归

    其他文章 手动以及使用torch.nn实现logistic回归和softmax回(当前文章) 手动以及使用torch.nn实现前馈神经网络实验 pytorch基本操作考察 动手实现 logistic 回归 (手动 + torch.nn两种方式) 动手实现 softmax 回归 (手动 + torch.nn两种方式) 使用 Tensor 初始化一个 1 x 3 的矩阵 M M M 和一个 2 × 1 的

    2024年02月16日
    浏览(40)
  • 空洞卷积(膨胀卷积)的相关知识以及使用建议(HDC原则)

    空洞卷积(Atrous Convolution)又名膨胀卷积(Dilated Convolution)。 dilated 英 [daɪˈleɪtɪd] 美 [daɪˈleɪtɪd] v. 扩大; (使)膨胀,扩张; [词典] dilate的过去分词和过去式; atrous adj. 深黑的; 暗灰色的; 纯黑色的; 下面是普通的卷积: kernel_size=3, stride=1, padding=0 下面是空洞卷积: kernel_

    2024年02月05日
    浏览(38)
  • 【深度学习】多卡训练__单机多GPU方法详解(torch.nn.DataParallel、torch.distributed)

    多GPU训练能够加快模型的训练速度,而且在单卡上不能训练的模型可以使用多个小卡达到训练的目的。 多GPU训练可以分为单机多卡和多机多卡这两种,后面一种也就是分布式训练——训练方式比较麻烦,而且要关注的性能问题也有很多,据网上的资料有人建议能单机训练最好

    2024年02月02日
    浏览(36)
  • 卷积、空洞卷积、反卷积与空洞反卷积的计算公式(全)

    经常使用的卷积有卷积、空洞卷积、反卷积与空洞反卷积的,下面总结了他们的计算公式。 卷积神将网络的计算公式为: N=(W-F+2P)/S+1 其中 N:输出大小 W:输入大小 F:卷积核大小 P:填充值的大小 S:步长大小 d = dilation 1、感受野计算。假定原来的卷积核大小为 k,那么塞入

    2024年02月16日
    浏览(36)
  • 逻辑回归torch.nn实现

    废话不说,直接看代码。

    2024年02月12日
    浏览(38)
  • 【深度学习】特征图的上采样(nn.Upsample)和转置卷积(nn.ConvTranspose2d) | pytorch

    这次就不废话了,我想赶在10点前回去洗头(现在9.17,还差一篇文章) 该函数有四个参数: 参数的介绍如下: 稍微翻译一下: 参数: 1)size(int或Tuple[int]或Tuple[int,int]或Tupple[int,int,int],可选):输出空间大小 2)scale_factor(float或Tuple[floot]或Tuple[floot,float]或Tuple[floo

    2023年04月08日
    浏览(43)
  • 如何使用torch.nn.utils.prune稀疏神经网络,以及如何扩展它以实现自己的自定义剪裁技术

    最新的深度学习技术依赖于难以部署的过度参数化模型。 相反,已知生物神经网络使用有效的稀疏连通性。 为了减少内存,电池和硬件消耗,同时又不牺牲精度,在设备上部署轻量级模型并通过私有设备上计算来确保私密性,确定通过减少模型中的参数数量来压缩模型的最

    2024年02月12日
    浏览(43)
  • 深度学习之卷积神经网络(CNN)

          大家好,我是带我去滑雪!       卷积神经网络(Convolutional Neural Network,CNN)是一种基于深度学习的前馈神经网络,主要用于 图像 和 视频识别 、 分类 、 分割 和 标注 等计算机视觉任务。它主要由 卷积层 、 池化层 、 全连接层 和 激活函数层 等组成。其中,卷积

    2024年02月05日
    浏览(49)
  • 十四、深度学习之卷积+池化+全连接各层

    1、神经网络     人脑中有大量的脑神经元。每个脑神经元(图中黑点)都可以看做是一个小的记忆体负责不同的记忆,神经元之间通过树突(图中细线)连接起来。     假如人看到一只猫,一个神经元之前见过猫,那么就会把信息往后传,此时神经元处于激活状态;没有

    2024年02月13日
    浏览(33)
  • 【torch.nn.Sequential】序列容器的介绍和使用

    nn.Sequential是一个有序的容器,该类将按照传入构造器的顺序,依次创建相应的函数,并记录在Sequential类对象的数据结构中,同时以神经网络模块为元素的有序字典也可以作为传入参数。 因此,Sequential可以看成是有多个函数运算对象,串联成的神经网络,其返回的是Module类型

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包