首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nn.conv2d来实现与nn.conv1d相同的功能?

如何使用nn.conv2d来实现与nn.conv1d相同的功能?
EN

Stack Overflow用户
提问于 2021-04-08 06:07:16
回答 1查看 47关注 0票数 2

我正致力于在FPGA上部署python CNNs,我正面临着一个问题。

我有一个1DCNN,它使用torch.conv1d层功能,但我使用的软件vitis-ai 1.3不支持它。

我在想,是否有什么方法可以用nn.conv2d来代替nn.conv1d来做同样的工作呢?

例如:

代码语言:javascript
复制
Conv1d(1, 32, 3, bias = True) => Conv2d(... 

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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-04-08 16:23:51

给定1d输入,核大小的(n,1)的2d卷积等同于核大小(n,)的1d卷积

代码语言:javascript
复制
nn.Conv1d(in_channels, out_channels, n)

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

注意,您必须对输入进行unsqueeze(-1),以使其具有正确的二维卷积形状,但您可以通过应用squeeze(-1)将输出返回到原始形状

代码语言:javascript
复制
F.conv1d(inputs, filters)

# is equivalent to:
F.conv2d(inputs.unsqueeze(-1), filters.unsqueeze(-1)).squeeze(-1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66994746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档