Pytorch 在给定输入矩阵和权重矩阵的情况下,如何手动应用nn.conv1d?

Pytorch 在给定输入矩阵和权重矩阵的情况下,如何手动应用nn.conv1d?,pytorch,conv-neural-network,Pytorch,Conv Neural Network,我试图了解nn.conv1d如何处理与WaveNet模型中音频处理相关的特定示例的输入 我有形状(1,18820)的输入数据,它通过一个输入层(1,16,1),输出一个形状(1,168820) 这部分我理解,因为你可以把两个矩阵相乘。下一层是conv1d,内核大小=3,输入通道=16,输出通道=16,因此状态dict显示了一个矩阵,其中权重的形状为(16,16,3)。当(1,168820)的输入通过该层时,结果是另一个(1,168820) 层内发生了哪些乘法步骤来将权重应用于音频数据?换句话说,

我试图了解nn.conv1d如何处理与WaveNet模型中音频处理相关的特定示例的输入

我有形状
(1,18820)
的输入数据,它通过一个输入层
(1,16,1)
,输出一个形状
(1,168820)

这部分我理解,因为你可以把两个矩阵相乘。下一层是conv1d,内核大小=3,输入通道=16,输出通道=16,因此状态dict显示了一个矩阵,其中权重的形状为(16,16,3)。当(1,168820)的输入通过该层时,结果是另一个(1,168820)

层内发生了哪些乘法步骤来将权重应用于音频数据?换句话说,如果我只想使用输入矩阵、状态矩阵和numpy应用层(仅正向计算),我将如何做


此示例使用Pytorch中的nn.conv1d层。此外,如果同一层的膨胀=2,这将如何改变操作?

卷积是一种特定类型的“滑动窗口操作”:即,对输入的重叠滑动窗口应用相同的功能/操作。
在您的示例中,您将每3个重叠的时间样本(每个样本有16个维度)作为16个过滤器的输入。因此,权重矩阵为3x16x16

您可以将其视为
(1,16,8820)
信号进入
(1,16*3,8820)
滑动窗口。然后乘以
16*3 x 16
权重矩阵,得到形状
(1,168820)
的输出

填充、扩张和跨步影响“滑动窗口”的形成方式。

有关更多信息,请参阅。

卷积是一种特定类型的“滑动窗口操作”:即,在输入的重叠滑动窗口上应用相同的功能/操作。
在您的示例中,您将每3个重叠的时间样本(每个样本有16个维度)作为16个过滤器的输入。因此,权重矩阵为3x16x16

您可以将其视为
(1,16,8820)
信号进入
(1,16*3,8820)
滑动窗口。然后乘以
16*3 x 16
权重矩阵,得到形状
(1,168820)
的输出

填充、扩张和跨步影响“滑动窗口”的形成方式。

有关更多信息,请参阅。

您关于展开矩阵的解释为我澄清了这一点,非常感谢!你关于展开矩阵的解释让我明白了这一点,非常感谢!