CNN反向传播数值示例

时间:2018-06-13 17:03:45

标签: unit-testing backpropagation convolutional-neural-network

我正在开发另一个深度学习库,目前正致力于传统卷积层的反向传播。对于每个卷积层,用户可以提供以下参数:

  1. 内核数量
  2. 每个内核的大小(深度,高度,宽度)。深度当然必须与前一层的输出深度相匹配。
  3. 二维填充
  4. 跨越两个维度
  5. 我想要的是为这部分编写单元测试,因为它非常复杂且容易出错。但是我自己很难想出一个数字例子,特别是我可以100%信任的例子。即使我这样做,我也绝不会说服某人通过手工制作矩阵旋转和卷积来检查它...我也没有运气搜索一个。但也许在谷歌搜索时,有人在这里比我好!

    我特意寻找的是一个例子,给定来自下一层的渐变,以及当前的权重和渐变,我们得到该层必须产生的渐变(其激活和权重)。当然,上面提到的图层参数将在我的测试中进行硬编码。

    类似的东西:

    activationGradients = [... numbers here ...]
    weights = [... numbers here...]
    biases = [... numbers here ...]
    
    then
    
    activationGradientsBackward  = [... numbers here ...]
    weightGradients = [... numbers here ...]
    biasGradients = [... numbers here ...]
    
    然后我可以写下这样的内容:

    assert agb, wg, bg == backprop(ag, w, b) 
    

    我已经阅读了很多关于描述网络的方程式的资源,并且尽可能地实现了它们。但是,我需要在每个步骤中断言正确性。互联网上有这样的数字例子吗?

    作为一个例子,我发现this post提供了我正在寻找的东西,但是对于前馈网。 CNN需要相同的内容。

0 个答案:

没有答案