🐳转置卷积
2021-11-30
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
 
我们一般可以通过卷积操作来实现高维特征到低维特征的转换.比如在一维卷积中,一个5 维的输入特征,经过一个大小为3 的卷积核,其输出为3 维特征。如果设置步长大于1,可以进一步降低输出特征的维数。但在一些任务中,我们需要将低维特征映射到高维特征,并且依然希望通过卷积操作来实现。
我们将低维特征映射到高维特征的卷积操作称为转置卷积,也称为反卷积。在卷积网络中,卷积层的前向计算和反向传播也是一种转置关系。
notion image
notion image
 

基本操作

从基本的转置卷积开始,设步幅为1且没有填充。 假设有一个的卷积核。 以步幅为1滑动卷积核窗口,每行 次,每列次,共产生个中间结果。 每个中间结果都是一个 的张量,初始化为0。 为了计算每个中间张量,输入张量中的每个元素都要乘以卷积核,从而使所得的张量替换中间张量的一部分。 请注意,每个中间张量被替换部分的位置与输入张量中元素的位置相对应。 最后,所有中间结果相加以获得最终结果。
notion image
可以对输入矩阵X和卷积核矩阵K实现基本的转置卷积运算trans_conv
 
可以使用高级API获得相同的结果
 
 

填充、步幅和多通道

与常规卷积不同,在转置卷积中,填充被应用于的输出(常规卷积将填充应用于输入)。 例如,当将高和宽两侧的填充数指定为1时,转置卷积的输出中将删除第一和最后的行与列。
在转置卷积中,步幅被指定为中间结果(输出),而不是输入
notion image
对于多个输入和输出通道,转置卷积与常规卷积以相同方式运作。 假设输入有个通道,且转置卷积为每个输入通道分配了一个的卷积核张量。 当指定多个输出通道时,每个输出通道将有一个的卷积核
 
同样,如果将代入卷积层来输出,并创建一个与具有相同的超参数、但输出通道数量是中通道数的转置卷积层,那么的形状将与相同。
 
 

与矩阵变换的联系

转置卷积为何以矩阵变换命名呢? 让我们首先看看如何使用矩阵乘法来实现卷积。
在下面的示例中定义了一个3×3的输入X和2×2卷积核K,然后使用corr2d函数计算卷积输出Y
 
将卷积核K重写为包含大量0的稀疏权重矩阵W。 权重矩阵的形状是(4,9),其中非0元素来自卷积核K
逐行连结输入X,获得了一个长度为9的矢量。 然后,W的矩阵乘法和向量化的X给出了一个长度为4的向量。 重塑它之后,可以获得与上面的原始卷积操作所得相同的结果Y:刚刚使用矩阵乘法实现了卷积
同样,可以使用矩阵乘法来实现转置卷积。
下面示例中,将上面的常规卷积2×2的输出Y作为转置卷积的输入。 想要通过矩阵相乘来实现它,只需要将权重矩阵W的形状转置为(9,4)
抽象来看,给定输入向量和权重矩阵,卷积的前向传播函数可以通过将其输入与权重矩阵相乘并输出向量来实现。 由于反向传播遵循链式法则和,卷积的反向传播函数可以通过将其输入与转置的权重矩阵相乘来实现。 因此,转置卷积层能够交换卷积层的正向传播函数和反向传播函数:它的正向传播和反向传播函数将输入向量分别与 相乘。
 
不难想象,转置卷积层可以用来交换卷积层输入和输出的形状。
设权重矩阵是形状为 的矩阵,对于长度为16的输入向量,卷积前向计算输出长度为4的向量。假如输入向量的长度为4,转置权重矩阵的形状为 ,那么转置卷积层将输出长度为16的向量。在模型设计中,转置卷积层常用于将较小的特征图变换为更大的特征图。在全卷积网络中,当输入是高和宽较小的特征图时,转置卷积层可以用来将高和宽放大到输入图像的尺寸。
 
  • PyTorch
  • 多维卷积空洞卷积
    目录