【发布时间】:2018-10-09 08:18:11
【问题描述】:
我有一个神经网络的自我实现,具有学习率、动量、L1/L2 正则化和批量标准化。当我执行梯度检查时,所有梯度都是正确的,除非我使用批量归一化
我编写了一个 python 代码来测试仅对批量标准化的梯度检查: https://gist.github.com/arnaldog12/9ba321cfdb18b6955a83403df1a7f514
对于上面的代码,我尝试删除所有不必要的代码,如动力、辍学和 L1/L2 正则化。如果你只是将上面的代码复制并粘贴到一些带有numpy的python环境中,它就可以工作。
我相信错误在于我传递给 batchnorm_backward 函数的梯度和我稍后计算的梯度。目前,我一直在调试代码,但一直没能找到问题所在。
有人已经对批量归一化进行了梯度检查吗? 如果是这样,我做错了什么?
【问题讨论】:
标签: python neural-network gradient-descent batch-normalization