考虑具有以下架构的卷积神经网络:



这里machine-learning - 卷积神经网络中的反向传播-LMLPHP是指machine-learning - 卷积神经网络中的反向传播-LMLPHP 卷积层,而machine-learning - 卷积神经网络中的反向传播-LMLPHP是指machine-learning - 卷积神经网络中的反向传播-LMLPHP 平均池化层。与每一层相对应的是输出。让machine-learning - 卷积神经网络中的反向传播-LMLPHP引用层machine-learning - 卷积神经网络中的反向传播-LMLPHP输出中的错误(与machine-learning - 卷积神经网络中的反向传播-LMLPHP相同)。

由于machine-learning - 卷积神经网络中的反向传播-LMLPHP已完全连接到softmax层,因此可以使用常规的反向传播方程轻松计算出machine-learning - 卷积神经网络中的反向传播-LMLPHPmachine-learning - 卷积神经网络中的反向传播-LMLPHP
可以简单地通过适本地对machine-learning - 卷积神经网络中的反向传播-LMLPHP上采样(并乘以machine-learning - 卷积神经网络中的反向传播-LMLPHP输出的梯度)来简单地计算出来,因为我们使用的是均值池。

如何将错误从machine-learning - 卷积神经网络中的反向传播-LMLPHP的输出传播到machine-learning - 卷积神经网络中的反向传播-LMLPHP的输出?换句话说,我们如何从machine-learning - 卷积神经网络中的反向传播-LMLPHP中找到machine-learning - 卷积神经网络中的反向传播-LMLPHP

Standford的深度学习教程使用以下等式来完成此任务:



但是,在使用此方程式时,我面临以下问题:

  • 我的machine-learning - 卷积神经网络中的反向传播-LMLPHP的大小为(2x2),而machine-learning - 卷积神经网络中的反向传播-LMLPHP的大小为(6x6),(我使用的是有效卷积,machine-learning - 卷积神经网络中的反向传播-LMLPHP的输出为(13x13),machine-learning - 卷积神经网络中的反向传播-LMLPHP的输出为(6x6))。在我的情况下,这种内部矩阵乘法甚至没有意义。
  • 公式假定两层中的 channel 数相同。同样,这对我来说不是真的。 machine-learning - 卷积神经网络中的反向传播-LMLPHP的输出具有64个 channel ,而ojit_a的输出具有96个 channel 。

  • 我在这里做错了什么?谁能解释一下如何通过卷积层传播错误?

    简单的MATLAB示例将受到高度赞赏。

    最佳答案

    这里要注意的一个好点是,池化层本身不会进行任何学习。池化层的功能是逐渐减小表示的空间大小,以减少网络中的参数和计算量。

    在正向传播期间,通过 P 合并块将 P 减小为单个值,即“获胜单位”的值。为了跟踪“获胜单位”,它的索引在前向通过时会记录下来,并在反向传播时用于进行梯度路由。

    在反向传播期间,将计算卷积层中的梯度,然后向后传递到池化层,就需要为卷积层的“获胜单位”分配梯度值,因为索引是在前向传递过程中事先指出的。

    渐变路由通过以下方式完成:

  • 最大池-错误仅分配给错误的来源-“获胜单位”,因为上一层池块中的其他单位对此没有贡献,因此所有其他赋值为零的
  • 平均池化-将错误乘以 1 /( P P ),并分配给整个池化块(所有单位都获得相同的值)。

  • 阅读有关整个反向传播过程的更全面的分割here

    关于machine-learning - 卷积神经网络中的反向传播,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36628181/

    10-12 19:30