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

PyTorch: Convolving a single channel image using torch.nn.Conv2d

我正在尝试使用卷积层对灰度(单层)图像(存储为 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)

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

RuntimeError: Expected 4-dimensional input for 4-dimensional weight 1 1 33 33, but got 2-dimensional input of size [246, 248] instead

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

在此先感谢您的帮助!

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

尝试:

conv1(tensor1[None, None, ...])