• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    pytorch 如何自定义卷积核权值参数

    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构建卷积层的例子

    这里为了网络模型需要写成了一个类:

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

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

    补充:pytorch中卷积参数的理解

    kernel_size代表着卷积核,例如kernel_size=3或kernel_size=(3,7);

    stride:表明卷积核在像素级图像上行走的步长,如图2,步长为1;

    padding:为上下左右填充的大小,例如padding=0/1/(1,1)/(1,3),

    padding=0 不填充;

    padding=1/(1,1) 上下左右分别填充1个格;

    padding=(1,3) 高(上下)填充2个格,宽(左右)填充6个格;

    卷积代码

    torch.nn.Conv2d(512,512,kernel_size=(3,7),stride=2,padding=1)

    指定输出形状的上采样

    def upsample_add(self,x,y):
            _,_,H,W = y.size()
            return F.interpolate(x, size=(H,W), mode='bilinear', align_corners=False) + y

    反卷积上采样

    output_shape_w=kernel_size_w+(output_w-1)(kernel_size_w-1)+2padding
    self.upscore2 = nn.ConvTranspose2d(
                512, 1, kernel_size=3, stride=2,padding=0, bias=False)

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • pytorch固定BN层参数的操作
    • pytorch交叉熵损失函数的weight参数的使用
    • Pytorch 统计模型参数量的操作 param.numel()
    • pytorch 一行代码查看网络参数总量的实现
    • pytorch查看网络参数显存占用量等操作
    • pytorch 优化器(optim)不同参数组,不同学习率设置的操作
    • pytorch LayerNorm参数的用法及计算过程
    上一篇:python结合多线程爬取英雄联盟皮肤(原理分析)
    下一篇:python3+selenium4实现切换窗口与iframe的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    pytorch 如何自定义卷积核权值参数 pytorch,如何,自定义,卷积,