WaveNet并不是真正的膨胀卷积,是吗?


10

在最近的WaveNet论文中,作者将他们的模型称为具有膨胀卷积的堆叠层。他们还产生以下图表,解释“常规”卷积和膨胀卷积之间的区别。

常规卷积看起来像是 非扩张卷积 一个卷积为2且步幅为1的卷积,重复4层。

然后,他们展示了其模型所使用的体系结构,它们称为膨胀卷积。看起来像这样。 WaveNet扩展卷积 他们说每一层的膨胀都增加了(1、2、4、8)。但是对我来说,这看起来像是常规卷积,滤镜大小为2,步幅为2,重复了4层。

据我了解,一个过滤器大小为2,步幅为1,膨胀为(1、2、4、8、8)的膨胀卷积看起来像这样。 实际膨胀卷积

在WaveNet图表中,没有一个过滤器会跳过可用的输入。没有孔。在我的图中,每个过滤器跳过(d-1)个可用输入。这是扩张应该不会起作用的方式吗?

所以我的问题是,以下哪个命题是正确的?

  1. 我不了解膨胀和/或规则卷积。
  2. Deepmind实际上并没有实现膨胀卷积,而是跨步卷积,但是滥用了膨胀一词。
  3. Deepmind确实实现了膨胀卷积,但没有正确实现图表。

我对TensorFlow代码的理解不够流利,无法理解他们的代码到底在做什么,但是我确实在Stack Exchange上发布了一个相关的问题,其中包含一些可以回答这个问题的代码。


我发现以下您的问题和答案很有趣。由于WaveNet论文没有解释步幅和扩张率的等效性,因此我决定在博客文章theblog.github.io/post/中总结一些关键概念,如果您仍在使用自回归神经,您可能会发现它很有趣。网络
Kilian Batzner,

Answers:


9

根据Wavenet的论文:

"A dilated convolution (also called a trous, or convolution with 
holes) is a convolution where the filter is applied over an area larger 
than its length by skipping input values with a certain step. It is 
equivalent to a convolution with a larger filter derived from the 
original filter by dilating it with zeros, but is significantly more 
efficient. A dilated convolution  effectively allows the network to 
operate on a coarser scale than with a normal convolution. This is 
similar to pooling or strided  convolutions, but 
here the output has the same size as the input. As a special case, 
dilated convolution with dilation 1 yields the standard convolution. 
Fig. 3 depicts dilated causal convolutions for dilations 1, 2, 4, and 
8."

动画显示固定步幅和每层上增加的膨胀因子。 Google Wavenet博客文章中的动画图3


6

一分钱只是为我滴了下来。在这三个命题中,正确的是四个:我不理解WaveNet的论文。

我的问题是我将WaveNet图解释为涵盖单个样本,以在以2D结构排列的不同样本上运行,其中一维是样本大小,另一个是批数。

但是,WaveNet只是在跨度为1的一维时间序列上运行整个滤波器,这显然具有较小的内存占用空间,但可以完成相同的操作。

如果您尝试使用跨步结构进行相同的操作,则输出尺寸将是错误的。

综上所述,采用2D样本x批处理结构的跨步方法可以提供相同的模型,但具有更高的内存使用率。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.