🐳多输入多输出
2021-11-30
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 

多输入通道

当输入包含多个通道时,需要构造一个与输入数据具有相同输入通道数的卷积核,以便与输入数据进行互相关运算。假设输入的通道数为,那么卷积核的输入通道数也需要为
如果卷积核的窗口形状是
  • ,可以把卷积核看作形状为的二维张量
  • ,卷积核的每个输入通道将包含形状为的二维张量。由于输入和卷积核都有个通道,我们可以对每个通道输入的二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将的结果相加)得到二维张量。
 
  • 输入
  • 输出
notion image
 
 

多输出通道

在最流行的神经网络架构中,随着神经网络层数的加深,我们常会增加输出通道的维数,通过减少空间分辨率以获得更大的通道深度。直观地说,可以将每个通道看作是对不同特征的响应。而现实可能更为复杂一些,因为每个通道不是独立学习的,而是为了共同使用而优化的。因此,多输出通道并不仅是学习多个单通道的检测器。
分别表示输入和输出通道的数目,并让为卷积核的高度和宽度。为了获得多个通道的输出,可以为每个输出通道创建一个形状为 的卷积核张量,这样卷积核的形状是 。在互相关运算中,每个输出通道先获取所有输入通道,再以对应该输出通道的卷积核计算出结果。
  • 输入
  • 输出
for
 
输入是3个7x7的矩阵。实际上原输入是3个5x5的矩阵,只是在周围加上了1的padding,变成了3个7x7的矩阵。
例子里面使用了两个卷积核,我们先关注于卷积核W0。和上面的例子相比,由于输入是3个7x7的矩阵,或者说是7x7x3的张量,则我们对应的卷积核W0也必须最后一维是3的张量,这里卷积核W0的单个子矩阵维度为3x3。那么卷积核W0实际上是一个3x3x3的张量。同时和上面的例子比,这里的步幅为2,也就是每次卷积后会移动2个像素的位置。
最终的卷积过程和上面的2维矩阵类似,上面是矩阵的卷积,即两个矩阵对应位置的元素相乘后相加。这里是张量的卷积,即两个张量的3个子矩阵卷积后,再把卷积的结果相加后再加上偏倚b。
7x7x3的张量和3x3x3的卷积核张量W0卷积的结果是一个3x3的矩阵。由于我们有两个卷积核W0和W1,因此最后卷积的结果是两个3x3的矩阵。或者说卷积的结果是一个3x3x2的张量。
仔细回味下卷积的过程,输入是7x7x3的张量,卷积核是两个3x3x3的张量。卷积步幅为2,最后得到了输出是3x3x2的张量。如果把上面的卷积过程用数学公式表达出来就是:
其中, 为输入矩阵的个数,或者是张量的最后一维的维数。 代表第个输入矩阵。 代表卷积核的第个子卷积核矩阵。 即卷积核 对应的输出矩阵的对应位置元素的值。
 
 

二维卷积层

  • 输入
  • 偏差
  • 输出
  • 计算复杂度 (浮点计算数 FLOP)
= =
1 GFLOP
  • 10 层, 样本, 10 PFlops ( )
 
 
 
 

1×1 卷积层

1×1卷积,即 。因为使用了最小窗口,1×1卷积失去了卷积层的特有能力——在高度和宽度维度上,识别相邻元素间相互作用的能力。 看起来似乎没有多大意义,毕竟卷积的本质是有效提取相邻像素间的相关特征。但其实1×1卷积的唯一计算发生在通道上。
下图展示了使用1×1卷积核与3个输入通道和2个输出通道的互相关计算。 这里输入和输出具有相同的高度和宽度,输出中的每个元素都是从输入图像中同一位置的元素的线性组合。 可以将1×1卷积层看作是在每个像素位置应用的全连接层,以个输入值转换为个输出值。 因为这仍然是一个卷积层,所以跨像素的权重是一致的。 同时,1×1卷积层需要的权重维度为,再额外加上一个偏置。
notion image
通常用于调整网络层的通道数量和控制模型复杂性
  • PyTorch
  • 填充和步幅多维卷积
    目录