我一直在尝试理解wavenet 论文。为了做到这一点,我使用了我在 github 上找到的这个实现,因为它得到了很好的结果,而且很清楚。但是我有一个关于我似乎无法解决的架构的问题。
一方面,wavenet 有这种膨胀方案:
从这里看来,不同的层根据膨胀采用不同数量的输入和输出。
另一方面,我们对整个wavenet的网络有这样的结构:
其中每个隐藏层输入和输出相同数量的值。这似乎很清楚,残差值只是在层的输出处与扩张卷积和门控激活单元产生的值相加。
我自己理解这两种结构,但我很难理解它们是如何共存的。
看起来每一层都输入和输出具有相同形状的张量,对吗?
如果是这样,膨胀是否只是忽略了几个值(不考虑它们)?这将使卷积更快,但我看不出传播一堆你永远不会使用的值的意义。
还有一点好处,门控激活单元后的 1x1 卷积是否是一个重新采样器以恢复初始维度?
有趣的是在代码中看到在门控激活单元之后有 2 个 1x1 卷积,一个用于跳过连接,另一个用于残差,但它们不相等(它们具有不同的形状)。因此,如果 1x1 对张量进行重新采样,它们似乎会将不同的形状传播到下一个隐藏层和跳跃连接。

