谷歌的 Wavenet 架构是否计算了一堆它永远不会使用的值?

机器算法验证 深度学习 卷积神经网络 生成模型
2022-04-05 23:24:38

我一直在尝试理解wavenet 论文为了做到这一点,我使用了我在 github 上找到的这个实现,因为它得到了很好的结果,而且很清楚。但是我有一个关于我似乎无法解决的架构的问题。

一方面,wavenet 有这种膨胀方案:

Wavenet 的膨胀结构

从这里看来,不同的层根据膨胀采用不同数量的输入和输出。

另一方面,我们对整个wavenet的网络有这样的结构:

wavenet的网络结构

其中每个隐藏层输入和输出相同数量的值。这似乎很清楚,残差值只是在层的输出处与扩张卷积和门控激活单元产生的值相加。

我自己理解这两种结构,但我很难理解它们是如何共存的。

看起来每一层都输入和输出具有相同形状的张量,对吗?

如果是这样,膨胀是否只是忽略了几个值(不考虑它们)?这将使卷积更快,但我看不出传播一堆你永远不会使用的值的意义。

还有一点好处,门控激活单元后的 1x1 卷积是否是一个重新采样器以恢复初始维度?

有趣的是在代码中看到在门控激活单元之后有 2 个 1x1 卷积,一个用于跳过连接,另一个用于残差,但它们不相等(它们具有不同的形状)。因此,如果 1x1 对张量进行重新采样,它们似乎会将不同的形状传播到下一个隐藏层和跳跃连接。

0个回答
没有发现任何回复~