我试图在Java中从零开始实现CNN。我没有使用任何让事情变得更难的外部库。
我的CNN具有以下结构:Input -> [ConvLayer, Pool, ReLU, FullyConnected] -> Output
这些图层几乎可以按任何顺序添加到彼此之后。 除了ConvLayer之外,每个图层都有效。前进传球很好,但我坚持错误的后向传球和重量的更新。
我知道这是反向内核或类似内容的某种向后卷积,但我无法让它工作,如果有人可以简单地解释哪些值必须乘以什么值,那就太好了: )
我的尝试可以在这里找到:CNN Convolution Layer - Backpropagation problems
我很高兴能得到任何帮助。
问候,芬恩
答案 0 :(得分:0)
当我们为特定图层做后向传递时,我们需要
事实上,卷积层中的权重更新与您在完全连接层中执行的操作非常相似。如果您在完全连接的图层中计算了损失 L ,那么您可以通过部分 L <来计算卷积图层的损失/ strong>关于 y ,其中 y 是您案例中卷积层的输出。然后,梯度计算将与完全连接的层相同。
如果您希望某些描述更具数学性,请参阅Backpropagation。
希望这会对你有所帮助。