嗨,我正在做一个简单的卷积神经网络(图片附在下面)。输入映像为5x5,内核为2x2,它经历了一个ReLU激活函数。在ReLU获得最大的2x2池池后,这些池就会被平化,并连接到完全连接的层中。一旦通过完全连接层,输出被转换为Softmax概率。我已经通过网络进行了传播,现在正在执行反向传播步骤。取交叉熵和softmax的导数,计算了全连通层的权值。
我感到困惑的是如何通过最大池预先形成反向传播,然后最终在卷积层中找到权值的导数。
我在网上发现的是,你需要找出关于平坦层的损失的导数,但我不确定你是如何做到的。
如果我能得到一些解释上的帮助,最好是用方程式来解释,那就太棒了。
堆栈溢出(https://stackoverflow.com/questions/63022091/back-propagation-through-a-simple-convolutional-neural-network)中的交叉张贴

发布于 2020-07-23 02:32:08
反向传播算法在网络中按权重分配惩罚。要获得每个权重的相关梯度,我们需要使用派生链规则将误差反传回其层。
一个层的导数取决于正在应用的函数。在扁平层的情况下,它只是简单地重塑(映射)值。因此,在这一层不会增加额外的损失。你所需要知道的就是扁平是如何发生的。
例如,如果前传球扁平是
flatten\begin{pmatrix} a & b\\ c & d \end{pmatrix} = \begin{pmatrix} a \\ b \\ c \\ d \end{pmatrix},
然后,您可以轻松地将相关成本映射到2 \times 2 \times 1功能映射。
在前向传递中,最大池层在沿着图像传递的3 \times 3窗口中获取最大值。例如,第一个3 \times 3窗口中的粗体值最大为11。
因此,由此产生的误差反向传播只会通过前向传递所传递的最大值。对于所有其他值,错误项不会反向传播。因此,在此点之前反向传播的当前错误矩阵将被乘以
因此,只有4个错误项将继续到早期的层。
我在这里详细介绍了如何通过卷积进行反向传播:层间CNN反向传播。
https://datascience.stackexchange.com/questions/78132
复制相似问题