我正在尝试从头开始实现卷积神经网络。问题是我不了解如何在CNN中学习过滤器。
我从头开始实现了前馈神经网络,并且我了解了反向传播对其的工作原理。我也了解基本的CNN架构。但是如何计算更新的过滤器?
我不想使用像tensorflow这样的库,因为我想了解所有这些背后的概念。
最佳答案
通过CNN进行的反向传播基本上与通过前馈层的反向传播相同。您可以将CNN想象成一个滑动窗口,在输入的每个窗口上应用相同的前馈层。 (您只需获取窗口中的所有值,然后将它们排列在单个长向量中。)
您可以为每个窗口独立计算参数的梯度。因为您在每个窗口中应用了相同的参数,所以可以对每个窗口中的梯度求和,并使用梯度进行更新,并使用它们来更新过滤器的参数。
附言自己编写反向传播可能是一个很好的练习,但是您几乎无法达到框架的效率。
关于machine-learning - 卷积神经网络中的滤波器如何通过反向传播进行训练?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56004785/