当前位置:   article > 正文

pytorch自定义卷积核权值参数_f.conv2d权重

f.conv2d权重

pytorch中构建卷积层一般使用nn.Conv2d方法,有些情况下我们需要自定义卷积核的权值weight,而nn.Conv2d中的卷积参数是不允许自定义的,此时可以使用torch.nn.functional.conv2d简称F.conv2d

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)

F.conv2d可以自己输入且也必须要求自己输入卷积权值weight和偏置bias。因此,构建自己想要的卷积核参数,再输入F.conv2d即可。下面是一个用F.conv2d构建卷积层的例子,这里为了网络模型需要写成了一个类:

  1. class CNN(nn.Module):
  2. def __init__(self):
  3. super(CNN, self).__init__()
  4. self.weight = nn.Parameter(torch.randn(16, 1, 5, 5)) # 自定义的权值
  5. self.bias = nn.Parameter(torch.randn(16)) # 自定义的偏置
  6. def forward(self, x):
  7. x = x.view(x.size(0), -1)
  8. out = F.conv2d(x, self.weight, self.bias, stride=1, padding=0)
  9. return out

值得注意的是,pytorch中各层需要训练的权重的数据类型设为nn.Parameter,而不是Tensor或者Variable。parameter的require_grad默认设置为true,而Varaible默认设置为False。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/194255
推荐阅读
相关标签
  

闽ICP备14008679号