卷积、反卷积、转置卷积和微步幅卷积

本文介绍了卷积的基本概念,包括卷积计算过程、参数影响及填充方式。详细阐述了卷积核大小、步长和填充对输出大小的影响,并对比了VALID和SAME两种填充方式。同时,解释了反卷积,又称转置卷积,指出其与卷积层前向和反向传播的关系。最后提到了微步幅卷积的概念,探讨了步长为分数时的反卷积操作。

卷积
首先定义本文要用到的符号

  • 输入图片的大小: i1=i2=i
  • 卷积核的大小: k1=k2=k
  • 卷积步长:s1=s2=s
  • 填充padding=p

下图表示参数为(i=5,k=3,s=2,p=1)的卷积计算过程,可以看出输出的图片大小是(33

微步卷积是一种新型卷积算法,采用了观核心对卷积算法进行优化,能够提高图像识别等任务的准确性。在PyTorch中,可以通过使用nn.Conv2d函数来实现微步卷积。以下是一个简单的例子: ``` import torch import torch.nn as nn class MicroConv2d(nn.Module): def __init__(self, in_channels, out_channels, kernel_size, stride=1, padding=0, groups=1, bias=True): super().__init__() self.kernel_size = kernel_size self.stride = stride self.padding = padding self.groups = groups self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=self.kernel_size, stride=self.stride, padding=self.padding, groups=self.groups, bias=bias) def forward(self, x): x = nn.functional.unfold(x, kernel_size=self.kernel_size, stride=self.stride, padding=self.padding) batch_size, _, L = x.shape w = torch.randn(self.groups, L, self.conv.out_channels // self.groups, device=x.device) w = torch.softmax(w, dim=1) x = x.permute(0, 2, 1) x = x.view(batch_size * L, self.groups, 1) w = w.view(self.groups, 1, self.conv.out_channels // self.groups) out = torch.matmul(x, w) out = out.view(batch_size, L, self.conv.out_channels).contiguous() return out ``` 在这个例子中,MicroConv2d继承了nn.Module,并实现了__init__forward两个函数。在__init__函数中,我们定义了卷积核大小(kernel_size)、步长(stride)、填充(padding)、卷积组数(groups)是否使用偏置(bias)等参数,同时使用nn.Conv2d函数来定义实际的卷积层。在forward函数中,我们首先使用functional.unfold函数将输入张量变成一个二维矩阵,然后使用随机权重w对输入进行卷积操作,最后将结果reshape成卷积层的输出形状。在卷积操作中,我们使用了softmax函数对随机生成的权重进行了归一化处理,以提高模型的稳定性。 使用该类进行微步卷积操作的示例代码如下: ``` import torch import torch.nn as nn x = torch.randn(1, 3, 32, 32) conv = MicroConv2d(3, 64, kernel_size=3, stride=1, padding=1, groups=8) out = conv(x) ``` 在这个例子中,我们随机生成了一张3通道、32x32大小的图片作为输入,然后使用MicroConv2d函数定义了一个微步卷积层,并输入我们生成的图片进行卷积操作。最终,out张量的形状为1x64x32x32,表示输出了64个通道,每个通道的大小为32x32。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值