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. Hadoop基础-MapReduce的Combiner用法案例

    Hadoop基础-MapReduce的Combiner用法案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编写年度最高气温统计 如上图说所示:有一个temp的文件,里面存放 ...

  2. C语言扫盲篇

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

  3. log4j2常见配置

    依赖jar: <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId> ...

  4. 纯CSS实现表单验证

    ladies and 乡亲们,表单验证你在做吗?客户端or服务器端,javascript or jquery,动手写 or 使用插件,今天我们来探索下使用纯css实现表单验证,借以学习css sele ...

  5. jq无缝滚动效果插件(之前的那个升级改造加强版)

    scroll滚动插件 支持上下左右,淡入淡出,滚动时间设置,动画时间设置,鼠标经过是否停止设置 默认配置参数可修改 $(".content").easysroll({ //默认配置 ...

  6. 新.Net架构必备工具列表

    N多年前微软官网曾发了.Net下必备的十种工具,N多年过去了,世异时移,很多东西都已经变化了,那个列表也似乎陈旧了.而且,该文也只是对十种工具独立的介绍,显得有些罗列的感觉,是不是每个工具都是同等重要 ...

  7. java Runnable、Callable、FutureTask 和线程池

    一:Runnable.Callable.FutureTask简介 (1)Runnable:其中的run()方法没有返回值. ①.Runnable对象可以直接扔给Thread创建线程实例,并且创建的线程 ...

  8. checkbox判断不为空

    checkbox不为空 html页面: @foreach($seals as $v) <input type="checkbox" name="seal_id[]& ...

  9. [BZOJ 1032][JSOI 2007]祖玛 题解(区间DP)

    [BZOJ 1032][JSOI 2007]祖玛 Description https://www.lydsy.com/JudgeOnline/problem.php?id=1032 Solution ...

  10. 使用sp_executesql

    建议您在执行字符串时,使用 sp_executesql 存储过程而不要使用 EXECUTE 语句.由于此存储过程支持参数替换,因此 sp_executesql 比 EXECUTE 的功能更多:由于 S ...