Neural network 理解、确认卷积层的培训和池层的效果

Neural network 理解、确认卷积层的培训和池层的效果,neural-network,conv-neural-network,backpropagation,Neural Network,Conv Neural Network,Backpropagation,我只是想知道卷积层是如何在CNN中训练的。不幸的是,相关教程对此只字不提,或者非常模糊 我发现: 如果我理解正确,这里使用的反向传播方法就像多层感知器(MLP)一样。唯一的区别是,为特征映射中的每个内核位置计算权重变化,然后计算所有这些权重变化的平均值 这句话对吗 所以你在特征图上取平均值,然后再在堆栈上取平均值 池层现在如何影响反向传播 难道没有更好的选择吗?让我们看一个实际的例子 当您使用TensorFlow创建conv层时,您可以编写如下内容- model.add(layers.Conv2

我只是想知道卷积层是如何在CNN中训练的。不幸的是,相关教程对此只字不提,或者非常模糊

我发现:

如果我理解正确,这里使用的反向传播方法就像多层感知器(MLP)一样。唯一的区别是,为特征映射中的每个内核位置计算权重变化,然后计算所有这些权重变化的平均值

这句话对吗

所以你在特征图上取平均值,然后再在堆栈上取平均值

池层现在如何影响反向传播


难道没有更好的选择吗?

让我们看一个实际的例子

当您使用TensorFlow创建conv层时,您可以编写如下内容-

model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
或者如果你使用Pytork,那么-

self.conv1 = nn.Conv2d(3, 32, (3,3))
在这两种情况下,您使用的是32个形状过滤器(3x3x3),因此,如果您计算参数的数量(为了简单起见,不要考虑偏差),则将为864个(32x3x3)。而您在网络中使用的所有池层,它们只是缩小您的空间维度(下采样),不需要可学习的参数或与这些(池)层关联。因此,当你反向传播时,你可以简单地想象它们不存在。因为反向传播算法的工作是计算损失函数对卷积层中使用的864个参数的导数,所以池层(模块)对它来说无关紧要,因为它只关心涉及可学习参数的模块,所以它只是用这些来计算导数,优化器用这些梯度来改变它们