PyTorch Conv2d自定义卷积核

写论文的时候需要卷积过程中的数据,自己去算很麻烦,就想到直接用PyTorch计算。但是当我们用Conv2d()去构造一个卷积层的时候会发现,Conv2d()会自动初始化一个卷积核,那么我们如何在使用Conv2d()的时候自定义它的卷积核呢?很简单,只需要给它的实例中的weight.data属性赋值即可,比如这样:

c = torch.nn.Conv2d(1, 1, (3, 3), stride=2, padding=1, bias=False)
c.weight.data = torch.Tensor([[[[1, 1, 1],
                                [1, 1, 0],
                                [0, 1, 1]]]])

赋值的时候要注意卷积核的维度是4维,还要注意TensorT是大写。

然后我们再构造一个Tensor,把结果计算出来:

a = torch.Tensor([[[[1, 0, 0, 1, 2],
                    [0, 2, 0, 0, 0],
                    [1, 1, 0, 1, 0],
                    [1, 0, 2, 2, 2],
                    [1, 0, 0, 2, 0]]]])
print(c(a))

输出结果:

tensor([[[[3., 0., 3.],
          [4., 7., 3.],
          [2., 4., 6.]]]], grad_fn=)

你可能感兴趣的:(pytorch,卷积,kernel,python)