PyTorch:使用 torch.nn.Conv2d 对单通道图像进行卷积

Eri*_*din 1 convolution conv-neural-network pytorch tensor

我正在尝试使用卷积层对灰度(单层)图像(存储为 numpy 数组)进行卷积。这是代码:

conv1 = torch.nn.Conv2d(in_channels = 1, out_channels = 1, kernel_size = 33)
tensor1 = torch.from_numpy(img_gray)
out_2d_np = conv1(tensor1)

out_2d_np = np.asarray(out_2d_np)
Run Code Online (Sandbox Code Playgroud)

我希望我的内核为 33x33,并且输出层的数量应等于输入层的数量,当图像的 RGB 通道相加时,输入层的数量为 1。运行时out_2d_np = conv1(tensor1)会产生以下运行时错误:

RuntimeError: 预期 4 维输入为 4 维权重 1 1 33 33,但得到了大小为 [246, 248] 的 2 维输入

我知道如何解决这个问题吗?我特别想使用torch.nn.Conv2d()类/函数。

预先感谢您的任何帮助!

Sha*_*hai 5

pytorchConv2d期望其 2D 输入实际上有4 个维度:小批量维度、通道维度和两个空间维度。
您的输入张量只有两个空间维度,并且缺少小批量和通道维度。在你的情况下,这两个维度实际上是单一维度(大小=1的维度)。

尝试:

conv1(tensor1[None, None, ...])
Run Code Online (Sandbox Code Playgroud)