下面,我将互换使用通道和功能映射。
我试图更好地理解1x1卷积是如何与多个输入通道一起工作的,但还没有找到一个很好的解释。在开始1x1之前,我想确保我对2D和3D卷积的理解。让我们看一个在Keras API中使用2D卷积的简单示例:
i = Input(shape=(64,64,3))
x = Conv2D(filters=32,kernel_size=(3,3),padding='same',activation='relu') (i)在上面的例子中,输入图像有3个通道,卷积层将产生32个特征映射。2D卷积层是否会将3个不同的核应用于3个输入通道中的每个通道,以生成每个特征图?如果是,这意味着在每个2D卷积运算中使用的内核数量=#个输入通道*#个特征图。在这种情况下,将使用96个不同的内核来生成32个特征映射。
现在让我们来看看3D卷积:
i = Input(shape=(1,64,64,3))
x = Conv3D(filters=32,kernel_size=(3,3,3),padding='same',activation='relu') (i)在上面的例子中,根据我目前的理解,每个内核都与所有输入通道同时卷积。因此,每个3D卷积运算中使用的核的数量=输入通道的数量。在这种情况下,将使用32个不同的内核来生成32个特征映射。
我理解在使用更大的内核(3x3,5x5,7x7)进行计算之前对通道进行下采样的目的。我之所以问这个问题,是因为我对1x1卷积如何保留学习特征感到困惑。让我们看一下1x1卷积:
i = Input(shape=(64,64,3))
x = Conv2D(filters=32,kernel_size=(3,3),padding='same',activation='relu') (i)
x = Conv2D(filters=8,kernel_size=(1,1),padding='same',activation='relu') (x)如果我对2D卷积的上述理解是正确的,那么1x1卷积层将使用32个不同的内核来生成每个特征映射。该操作将使用总共256个内核(32*8)来生成8个特征映射。每个特征图计算实质上将32个像素合并为一个。这一个像素如何以某种方式保留前32个像素的所有特征?
发布于 2021-11-08 16:48:42
1x1卷积是一个2D卷积,其“核大小”为1。由于没有空间邻域的感觉,就像在3x3内核中一样,它们如何能够学习空间特征取决于体系结构。
顺便说一下,2D卷积和3D卷积的区别在于卷积的运动。2D卷积将滤波器沿"x和y“相关,并正在学习每个输出通道的(内核x内核x input_channel)参数。3D卷积沿着"x,y和z“相关,并且正在学习(内核x input_channel)每个输出通道的参数。你可以对带有通道的图像进行3D卷积,但这并没有什么意义,因为我们已经知道“深度”是相关的。3D卷积通常用于几何体积,例如来自CT扫描的数据。
https://stackoverflow.com/questions/69886845
复制相似问题