如何在 Pytorch 中实际应用 Conv2d 过滤器

How to actually apply a Conv2d filter in Pytorch

我是 Python 的新手,正在尝试使用 PyTorch 中的过滤器进行一些操作。

我正在苦苦思索如何应用 Conv2d。我有以下创建 3x3 移动平均过滤器的代码:

resized_image4D = np.reshape(image_noisy, (1, 1, image_noisy.shape[0], image_noisy.shape[1]))
t = torch.from_numpy(resized_image4D)

conv = torch.nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3, padding=1, bias=False)
conv.weight = torch.nn.Parameter(torch.ones((1,1,3, 3))/9.0)

通常在 NumPy 中我会调用 filtered_image = convolve2d(image, kernel),但经过几天的搜索我一直无法弄清楚 PyTorch 的等价物是什么。

我想你正在寻找 torch.nn.functional.conv2d

因此,您的代码段变为:

resized_image4D = np.reshape(image_noisy, (1, 1, image_noisy.shape[0], image_noisy.shape[1]))
t = torch.from_numpy(resized_image4D)

conv = torch.nn.functional.conv2d(in_channels=1, out_channels=1, kernel_size=3, padding=1, bias=False)
conv.weight = torch.nn.Parameter(torch.ones((1,1,3, 3))/9.0)