CNN卷积向后传递

时间:2017-04-29 21:38:57

标签: java conv-neural-network convolution

我试图在Java中从零开始实现CNN。我没有使用任何让事情变得更难的外部库。

我的CNN具有以下结构:Input -> [ConvLayer, Pool, ReLU, FullyConnected] -> Output

这些图层几乎可以按任何顺序添加到彼此之后。 除了ConvLayer之外,每个图层都有效。前进传球很好,但我坚持错误的后向传球和重量的更新。

我知道这是反向内核或类似内容的某种向后卷积,但我无法让它工作,如果有人可以简单地解释哪些值必须乘以什么值,那就太好了: )

我的尝试可以在这里找到:CNN Convolution Layer - Backpropagation problems

我很高兴能得到任何帮助。

问候,芬恩

1 个答案:

答案 0 :(得分:0)

当我们为特定图层做后向传递时,我们需要

  • 该层的损失或错误值,
  • 先前卷积层的输出,
  • 'Delta',这是卷积输出的部分损失。

事实上,卷积层中的权重更新与您在完全连接层中执行的操作非常相似。如果您在完全连接的图层中计算了损失 L ,那么您可以通过部分 L <来计算卷积图层的损失/ strong>关于 y ,其中 y 是您案例中卷积层的输出。然后,梯度计算将与完全连接的层相同。

如果您希望某些描述更具数学性,请参阅Backpropagation

希望这会对你有所帮助。