您现在的位置是:首页 > 正文

关于空洞卷积(Atrous Convolution)

2024-04-01 00:45:04阅读 1

内容节选自《神经网络与深度学习》电子版:https://nndl.github.io/

 

对于一个卷积层,如果希望增加输出单元的感受野,一般可以通过三种方式 实现:

  1)增加卷积核的大小;

  2)增加层数,比如两层3×3的卷积可以近似一层5×5 卷积的效果;

  3)在卷积之前进行汇聚操作。

前两种方式会增加参数数量,而 第三种方式会丢失一些信息。

 

空洞卷积(Atrous Convolution)是一种不增加参数数量同时增加输出单元感受野的一种方法,也称为膨胀卷积(Dilated Convolution)。 空洞卷积通过给卷积核插入“空洞”来变相地增加其大小。

如果在卷积核的每两个元素之间插入𝐷−1个空洞,卷积核的有效大小为

   𝐾′=𝐾+(𝐾−1)×(𝐷−1)

其中𝐷称为膨胀率(DilationRate),当𝐷=1时卷积核为普通的卷积核。

D=2时,K' = 3+(3-1)*(2-1) = 5

D=3时,K' = 3+(3-1)*(3-1) = 7

代码

torch.nn.Conv2d ( in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1,

                               groups=1, bias=True, padding_mode='zeros')

in_channels(int) – 输入信号的通道。

out_channels(int) – 卷积产生的通道。

kerner_size(int or tuple) - 卷积核的尺寸,卷积核的大小为(k,),第二个维度是由in_channels来决定的,所以实际上卷积大小为kerner_size*in_channels

stride(int or tuple, optional) -卷积步长

padding (int or tuple, optional)- 输入的每一条边补充0的层数

dilation(int or tuple, `optional``) – 卷积核元素之间的间距

groups(int, optional) – 从输入通道到输出通道的阻塞连接数

bias(bool, optional) - 如果bias=True,添加偏置

conv1 = nn.Conv2d(1, 1, 3, stride=1, bias=False, dilation=1)  # 普通卷积 

conv2 = nn.Conv2d(1, 1, 3, stride=1, bias=False, dilation=2)  # dilation就是空洞率,即间隔 

ps:如果希望卷积后大小跟原来一样,需要设置padding = (kerner_size - 1) / 2   if   stride = 1 (步长为1前提下)

网站文章

  • echarts世界地图,国家名称翻译

    echarts世界地图,地名翻译

    2024-04-01 00:44:57
  • qt自定义信号和槽

    1

    2024-04-01 00:44:31
  • html5视频播放原理,HTML5 - 使用JavaScript控制<video>视频播放(自定义视频播放器)...

    html5视频播放原理,HTML5 - 使用JavaScript控制<video>视频播放(自定义视频播放器)...

    下面不使用的controls属性,通过创建一个自定义播放器演示如何使用js操作元素。效果图如下:实现功能如下:(1)可以播放,暂停,停止视频。(2)可以改变播放速度(2倍速度加速播放,一半的速度慢速播...

    2024-04-01 00:44:27
  • SpringBoot 2.0 配置拦截器

    拦截器常见应用场景日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;性能监控:有...

    2024-04-01 00:44:21
  • JavaScript 执行环境、作用域、内存管理及垃圾回收机制

    JavaScript 执行环境、作用域、内存管理及垃圾回收机制

    前言JavaScript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。[原理]找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间),周期性地执行这一操作。在学习垃圾回收机制之前让我们先来学习下执行环境及作用域执行环境执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为...

    2024-04-01 00:43:48
  • Vue3 v-model 变更

    Vue3 v-model 变更

    2024-04-01 00:43:41
  • 一文读懂SAFe、DevOps、ITIL和CMMI:互斥还是互补?

    一文读懂SAFe、DevOps、ITIL和CMMI:互斥还是互补?

    本文转自微信号EAWorld。扫描下方二维码,关注成功后,回复“普元方法+”,将会获得热门课堂免费学习机会!本文转自微信号EAWorld。若您试图使企业以更加精简、高效的方式运作,您可利用几种框架来达...

    2024-04-01 00:43:35
  • [X] Android Studio (not installed)

    [X] Android Studio (not installed)你安装了AS,只是路径是自定义的,所以给Flutter指定你的路径吧flutter config --android-studio-dir="D:\Android Studio"路径有空格所以路径加引号,没有空格可不加

    2024-04-01 00:43:10
  • Ajax实现

    Ajax实现

    Ajax实现1、创建服务器获取服务器端的响应onload事件onreadystatechange事件2、配置Ajax对象3、发送请求1、创建服务器在server目录中下载Express框架,并新建ap...

    2024-04-01 00:43:01
  • Java --- JUC之多线程

    1、恢复挂起的线程到真正锁的获取还是有时间差的,从开发人员来看这个时间微乎其微,但从CPU的角度来看,这个时间差存在的还是很明显的。2、使用多线程很重要的考量点是线程切换的开销,当采用非公平锁时,当一...

    2024-04-01 00:42:55