簡體   English   中英

如何使用 nn.conv2d 做與 nn.conv1d 一樣的 function?

[英]How to use nn.conv2d to do the same function as nn.conv1d?

我正在努力在 FPGA 上部署 python CNN,我遇到了一個問題。

我有一個使用torch.conv1d層 function 的 1d CNN,我正在使用的軟件不支持它: vitis-ai 1.3

我正在弄清楚是否有某種方法可以使用nn.conv2d來代替nn.conv1d做同樣的工作?

例如:

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

有沒有辦法做到這一點? (不會損失太多性能?)

謝謝你。

給定一維輸入,內核大小(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 squeeze(-1)將 output 恢復為原始形狀:

F.conv1d(inputs, filters)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM