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