写论文的时候需要卷积过程中的数据,自己去算很麻烦,就想到直接用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维,还要注意Tensor的T是大写。
然后我们再构造一个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=)