如何通过反向传播训练卷积神经网络中的过滤器?

Posted

技术标签:

【中文标题】如何通过反向传播训练卷积神经网络中的过滤器?【英文标题】:How are filters in a convolutional neural network trained through backpropagation? 【发布时间】:2019-09-24 01:33:31 【问题描述】:

我正在尝试从头开始实现卷积神经网络。问题是我不明白如何在 CNN 中学习过滤器。

我之前从头开始实现了一个前馈神经网络,并且我了解反向传播如何为它们工作。我也了解基本的 CNN 架构。但是如何计算更新后的过滤器?

我不想使用 tensorflow 之类的库,因为我想了解所有这些背后的概念。

【问题讨论】:

【参考方案1】:

通过 CNN 的反向传播基本上与通过前馈层相同。您可以将 CNN 想象成一个滑动窗口,在输入的每个窗口上应用相同的前馈层。 (您只需获取窗口中的所有值并将它们排列在一个长向量中。)

您可以为每个窗口独立计算参数的梯度。因为您在每个窗口中应用相同的参数,所以您可以对来自每个窗口的梯度求和,并使用梯度进行更新,并使用它们来更新过滤器的参数。

附:自己编写反向传播可能是一个很好的练习,但您几乎无法达到框架的效率。

【讨论】:

以上是关于如何通过反向传播训练卷积神经网络中的过滤器?的主要内容,如果未能解决你的问题,请参考以下文章

SIGAI深度学习第七集 卷积神经网络1

卷积神经网络:总结

卷积神经网络(CNN)的训练过程

编写C语言版本的卷积神经网络CNN之三:CNN的误差反向传播过程

用numpy实现CNN卷积神经网络

卷积神经网络