在Pytorch中的张量上应用一维卷积

时间:2020-04-04 18:09:57

标签: pytorch

我有一个张量,代表一组一维信号,它们沿着列轴连接在一起。假设我有300个尺寸为64的1D信号。所以[64x300]

我想在GPU上对其应用[0.2 0.2 0.2 0.2 0.2]的平滑卷积/移动平均内核,但是我不确定确切要使用什么API。能给我一个例子吗?

1 个答案:

答案 0 :(得分:2)

您可以使用常规的torch.nn.Conv1d来完成此操作。

输入

在您的情况下,您有1个频道(1D),其时间步长为300(请refer to documentation,这些值将分别为C_in和{{1} }。

因此,您的输入应该是(您需要L_in不能被挤压!):

1

卷积

您需要import torch inputs = torch.randn(64, 1, 300) torch.nn.Conv1d等于kernel_size(如元素指示:5)且没有[0.2 0.2 0.2 0.2 0.2]。我假设您的输出必须具有相同的大小(bias),因此300元素必须在开头和结尾进行填充。所有这些都为我们提供了这个模块:

2

该模块的权重(module = torch.nn.Conv1d( in_channels=1, out_channels=1, kernel_size=5, padding=2, bias=False ) 值)可以这样指定:

0.2

module.weight.data = torch.full_like(module.weight.data, 0.2) 适用于任何大小的内核,以防您需要torch.full_like以外的其他大小。

最后将其运行到平均步数,您已完成:

5

GPU

如果您想使用out = module(inputs) ,只需像这样投射GPUmodule

inputs

有关更多信息,请参见CUDA documentation