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

时间:2021-02-05 10:10:28

标签: python pytorch convolution

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

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

    #include<stdio.h>
    #define     _CRT_SECURE_NO_WARNINGS

    #pragma warning(disable : 4996)


    #define     SIZE        50

    int i = 0;

    int main() {

    char usertxt[SIZE], myoperator[SIZE];
    printf("addition='+',subtraction='-',multiplication='*',division='/'\n");
    usertxt[0] = 0;
    int x, myarray[SIZE];
    printf("How many numbers should be entered? ");
    scanf_s("%d", &x);


    for (i = 0; i < x; i++) {
        scanf_s(" %c", &myoperator[i], 1);
            switch (myoperator[i]) {
            case '+':printf("Addition operation\n");
                printf("  Enter your number: ");
                scanf_s("%d", &myarray[i]);
                usertxt[i] = printf("%d%c", myarray[i], myoperator[i]);
                break;
            case '-':printf("Subtraction operation\n");
                printf("Enter your numbers: ");
                scanf_s("%d", &myarray[i]);
                usertxt[i] = printf("%d%c", myarray[i], myoperator[i]);
                break;
            case '*':printf("Multiplication operation\n");
                printf("Enter your numbers: ");
                scanf_s("%d", &myarray[i]);
                usertxt[i] = printf("%d%c", myarray[i], myoperator[i]);
                break;
            case '/':printf("Division operation\n");
                printf("Enter your numbers: ");
                scanf_s("%d", &myarray[i]);
                usertxt[i] = printf("%d%c", myarray[i], myoperator[i]);
                break;
            default :if (myoperator[i] == '\0') {
                break;
            };
        }

    }
}

通常在 NumPy 中,我只会调用 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) ,但经过几天的搜索,我一直无法弄清楚 PyTorch 的等效项是什么。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找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)