pytorch - 在 Pytorch 中对张量应用一维卷积

标签 pytorch

我有一个张量,它表示一组一维信号,这些信号沿列轴连接。假设我有 300 个大小为 64 的一维信号。所以 [64x300]

我想在 GPU 上应用平滑卷积/移动平均内核 [0.2 0.2 0.2 0.2 0.2],但我不确定具体的 API 是什么。可以给我举个例子吗?

最佳答案

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

输入

在您的情况下,您有 1 channel (1D),具有 300 时间步长(请 refer to documentation 这些值将适本地 C_inL_in)。

因此,对于您的输入来说,它是(您需要 1它无法被挤压!):

import torch

inputs = torch.randn(64, 1, 300)

卷积

您需要torch.nn.Conv1dkernel_size等于5(如您的元素所示:[0.2 0.2 0.2 0.2 0.2])并且没有偏差。我假设您的输出必须具有相同的大小 (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 之外的其他大小。

最后运行到平均步数即可完成:

out = module(inputs)

GPU

如果您想使用GPU,只需像这样转换您的模块输入:

inputs = inputs.cuda()
module = module.cuda()

参见CUDA documentation了解更多信息。

关于pytorch - 在 Pytorch 中对张量应用一维卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61032581/

相关文章:

python - PyTorch 警告关于在前向包含多个 autograd 节点时使用非完整后向钩子(Hook)

python - python中 'ctx'和 'self'的区别?

python - 不推荐使用与输入大小 (torch.Size([16, 2])) 不同的目标大小 (torch.Size([16]))

machine-learning - 如何从 Fastai 学习器语言模型中的编码器获取句子嵌入

python - 在 Pytorch 中查找前 k 个匹配项

nlp - 使用 `generate`方法进行推理时,如何获取T5模型的logits?

python - 为什么我无法在 Huggingface 中设置 TrainingArguments.device?

pytorch - 训练 DNN 时如何监控 GPU 内存使用情况?

python - pytorch Dataset.__getitem__ 是否必须返回字典?

python - Pytorch 嵌入 RuntimeError : Expected object of type torch. LongTensor 但发现参数类型 torch.cuda.LongTensor #3 'index'