[英]How to use nn.conv2d to do the same function as 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.