【问题标题】:How to use nn.conv2d to do the same function as nn.conv1d?如何使用 nn.conv2d 做与 nn.conv1d 相同的功能?
【发布时间】:2021-07-03 18:40:12
【问题描述】:

我正在努力在 FPGA 上部署 python CNN,但我遇到了一个问题。

我有一个使用torch.conv1d 层函数的一维 CNN,但我使用的软件不支持它:vitis-ai 1.3。

我想知道是否有某种方法可以使用nn.conv2d 来代替nn.conv1d 做同样的工作?

例如:

Conv1d(1, 32, 3, bias = True) => Conv2d(... 

有没有办法做到这一点? (不会损失太多性能?)

谢谢。

【问题讨论】:

  • 在什么意义上支持nn.Conv2d 但不支持nn.Conv1d?

标签: python python-3.x pytorch conv-neural-network


【解决方案1】:

给定一维输入,内核大小(n,1) 的二维卷积等效于内核大小(n,) 的一维卷积:

nn.Conv1d(in_channels, out_channels, n)

# for 1d input, is equivalent to:
nn.Conv2d(in_channels, out_channels, (n,1))

请注意,您必须 unsqueeze(-1) 输入才能使其具有正确的 2d 卷积形状,但您可以通过应用 squeeze(-1) 将输出恢复为原始形状:

F.conv1d(inputs, filters)

# is equivalent to:
F.conv2d(inputs.unsqueeze(-1), filters.unsqueeze(-1)).squeeze(-1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2012-09-08
    • 1970-01-01
    • 2023-04-07
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多