可以使用nn.Conv2d代替nn.Conv1d
import torch
import torch.nn as nn
conv1d = nn.Conv1d(in_channels=64,
out_channels=1,
kernel_size=2,
stride=1,
padding=1,
dilation=1,
bias=False)
conv2d = nn.Conv2d(in_channels=64,
out_channels=1,
kernel_size=(2, 1),
stride=1,
padding=(1, 0),
dilation=1,
bias=False)
with torch.no_grad():
conv2d.weight.copy_(conv1d.weight.unsqueeze(3)) # copy conv1d weight to conv2d
input = torch.randn(1, 64, 114)
out1 = conv1d(input)
out2 = conv2d(input.unsqueeze(3)) # add dim 1 to last dimension
out2 = out2.squeeze(3)
print((out1==out2).all())
# out print True, so out1 == out2
####
本文介绍了一种将一维卷积层(nn.Conv1d)转换为二维卷积层(nn.Conv2d)的方法,通过增加维度并复制权重,使两者在特定输入下输出相同,适用于从一维信号处理过渡到二维图像处理的场景。
7131

被折叠的 条评论
为什么被折叠?



