Dilation 卷积,也被称为:空洞卷积、膨胀卷积。

一、一般的卷积操作:

首先,可以通过动态图,理解正常卷积的过程:

如上图,可以看到卷积操作。

对于CNN结构,通常包括如下部分:

输入层 (input layer)---  卷积计算层 (CONV)--- 激励层(RELU) --- 池化层(Pooling) --- 全连接层(FC)

通常利用卷积来实现数据的特征提取。卷积层还有一个权值共享的原则:用一句话表达就是每个神经元只关注一个特征

当然卷积完经过激励层做一个非线性映射,输出后就到Pooling layer了。

池化层的作用:

(1)压缩数据和参数的量,减小过拟合。

(2)增大感受野。

主要两种方法:Max Pooling  和  Average Pooling

对于有些算法,池化完还需要upsampling获得原始数的尺寸进行后续操作。由于这种通过卷积操作存在内部数据丢失的问题,存在信息损失,有人提出了dilated conv算法,即不通过池化获得较大的视野,并减小信息损失。

二、膨胀卷积

如上图,膨胀卷积的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者自然语言处理中需要较长的sequence信息依赖的问题中,都能很好的应用。

在tensorflow中代码为:

tf.nn.atrous_conv2d(value,filters,rate,padding,name=None)

  value:输入的卷积图像,[batch, height, width, channels]。

  filters:卷积核,[filter_height, filter_width, channels, out_channels],通常NLP相关height设为1。

  rate:正常的卷积通常会有stride,即卷积核滑动的步长,而膨胀卷积通过定义卷积和当中穿插的rate-1个0的个数,实现对原始数据采样间隔变大。

  padding:”SAME”:补零   ; ”VALID”:丢弃多余的

 三、IDCNN(Iterated Dilated CNN)

模型是4个大的相同结构的Dilated CNN block拼在一起,每个block里面是dilation width为1, 1, 2的三层Dilated卷积层,所以叫做 Iterated Dilated CNN。参考代码实现:

layers = [
{
'dilation': 1
},
{
'dilation': 1
},
{
'dilation': 2
},
]
finalOutFromLayers = []
totalWidthForLastDim = 0
for j in range(4):
for i in range(len(layers)):
dilation =layers[i]['dilation']
isLast = True if i == (len(layers) - 1) else False
w = tf.get_variable("filterW",shape=[1, filter_width, num_filter,num_filter],initializer=tf.contrib.layers.xavier_initializer())
b = tf.get_variable("filterB", shape=[num_filter])
conv = tf.nn.atrous_conv2d(layerInput,w,rate=dilation,padding="SAME")
conv = tf.nn.bias_add(conv, b)
conv = tf.nn.relu(conv)
if isLast:
finalOutFromLayers.append(conv)
totalWidthForLastDim += num_filter
layerInput = conv
finalOut = tf.concat(axis=3, values=finalOutFromLayers)

  通过代码可以看到具体的IDCNN的实现流程以及输出的结合方式。

膨胀卷积与IDCNN的更多相关文章

  1. NLP进阶之(七)膨胀卷积神经网络

    NLP进阶之(七)膨胀卷积神经网络1. Dilated Convolutions 膨胀卷积神经网络1.2 动态理解1.2.2 转置卷积动画1.2.3 理解2. Dilated Convolutions ...

  2. 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积

    介绍关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional network ...

  3. 转置卷积&&膨胀卷积

    Convolution arithmetic tutorial theano Convolution arithmetric github 如何理解深度学习中的deconvolution networ ...

  4. [转]CNN 中千奇百怪的卷积方式大汇总

    https://www.leiphone.com/news/201709/AzBc9Sg44fs57hyY.html 推荐另一篇很好的总结:变形卷积核.可分离卷积?卷积神经网络中十大拍案叫绝的操作. ...

  5. tensorflow 卷积神经网络基本参数()

    目录: 1. tf.placeholder_with_default(tf.constant(1.0),shape=[],name='use_dropout')   # 设置一个占位符 2. tf.c ...

  6. CNN中千奇百怪的卷积方式大汇总

    1.原始版本 最早的卷积方式还没有任何骚套路,那就也没什么好说的了. 见下图,原始的conv操作可以看做一个2D版本的无隐层神经网络. 附上一个卷积详细流程: [TensorFlow]tf.nn.co ...

  7. 卷积神经网络以及TextCNN

    对于卷积神经网络的详细介绍和一些总结可以参考以下博文: https://www.cnblogs.com/pinard/p/6483207.html https://blog.csdn.net/guoy ...

  8. 时空卷积网络TCN

    1.写在前面 实验表明,RNN 在几乎所有的序列问题上都有良好表现,包括语音/文本识别.机器翻译.手写体识别.序列数据分析(预测)等. 在实际应用中,RNN 在内部设计上存在一个严重的问题:由于网络一 ...

  9. LSTM的备胎,用卷积处理时间序列——TCN与因果卷积(理论+Python实践)

    什么是TCN TCN全称Temporal Convolutional Network,时序卷积网络,是在2018年提出的一个卷积模型,但是可以用来处理时间序列. 卷积如何处理时间序列 时间序列预测,最 ...

随机推荐

  1. 【CSS】盒子模型的计算

    1.标准盒子的尺寸计算 盒子自身的尺寸:内容的宽高+两侧内边距+两侧边框 盒子在页面中占位的尺寸:内容的宽高+两侧内边距+两侧边框+两侧外边距 <!DOCTYPE html> <ht ...

  2. C语言扫盲篇

    C语言扫盲篇 作者:尹正杰 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 一.什么是C语言 C 语言是一种通用的高级语言,最初是由 ...

  3. python---django中自带分页类使用

    请先看在学习tornado时,写的自定义分页类:思路一致: python---自定义分页类 1.基础使用: 后台数据获取: from django.core.paginator import Pagi ...

  4. javascript命名空间

    命名空间:命名空间有助于减少程序中所需要的全局变量的数量,并且同时还有助于避免命名冲突或过长的名字前缀. 板栗: var MYAPP = MYAPP || {}; MYAPP.namespace = ...

  5. JavaScript继承详解(一)

    面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++.C#.Java)的开发经验. 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例. 类定义了一类事物公共的行为和方法:而实例则 ...

  6. Flex 界面初始化 自定义 预加载 类!

    说明: 自定义界面初始化过程提示:初始化...,初始化完毕,加载完毕! ZPreloader.as package com.command { import flash.display.Graphic ...

  7. [BZOJ 2257][JSOI2009]瓶子和燃料 题解(GCD)

    [BZOJ 2257][JSOI2009]瓶子和燃料 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子 ...

  8. HDU 1251 统计难题 字符匹配

    题目描述:先说明此题只有一个测试实例,然后输入一系列的单词,以一个回车为结束符,然后输入一个字符串,要你查找以这个字符串为前缀的单词的个数,处理到文件结束. 解题报告:一开始看到这题,竟然直接用暴力去 ...

  9. python3之安装、pip、setuptools

    1.python3安装 下载地址:https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz #安装环境centOS 7 #安装依赖包: yum ...

  10. Linux内核源码分析--内核启动之(6)Image内核启动(do_basic_setup函数)(Linux-3.0 ARMv7)【转】

    原文地址:Linux内核源码分析--内核启动之(6)Image内核启动(do_basic_setup函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://bl ...