簡體   English   中英

將 nn.Linear 轉換為 nn.Conv1d

[英]Convert nn.Linear to nn.Conv1d

我想要的格式 output 我的 model 不支持 nn.Linear,所以我想更改它以執行完全相同的操作,但使用 nn.Conv1d。

我的輸入是形狀 (N, A, B),我想要一個線性層將其轉換為形狀 (N, A, C) 的 output。 以前,我是用層nn.Linear(B, C)做的。 我能夠通過執行來生成具有正確尺寸的工作代碼

t1 = t1.transpose(1,2)
conv = nn.Conv1d(
            in_channels=B,
            out_channels=C,
            kernel_size=1
        )
t2 = conv(t1)
t2 = t2.transpose(1,2)

這在功能上等同於執行t2 = nn.Linear(B,C)(t1)嗎? 如果是這樣,是否有更好/更簡潔的方法?

是的,這本質上是在做同樣的事情。 您可以通過添加尾隨虛擬維度而不是轉置

t1 = t1.unsqueeze(-1)
...
t2 = t2.squeeze(-1)

這樣做的好處是數據不必重新排序,但影響可能可以忽略不計。

暫無
暫無

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

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