Batch Normalization
批量归一化相当于在每一层神经网络的激活函数前进行归一化预处理。
先写batchnorm_forward
1 | def batchnorm_forward(x, gamma, beta, bn_param): |
backword
很难,公式看图:
1 | def batchnorm_backward(dout, cache): |
另一种backword
1 | def batchnorm_backward_alt(dout, cache): |
然后把之前的FullyConnectedNet的use_batchnorm补上,之前已经写好了,不再赘述。
Dropout
定义一个mask,用来生成0-1随机数,然后转化为大于某个数的布尔值,再把输入值乘上这个mask就可以得到一部分失活,一部分没有失活的神经元
1 | def dropout_forward(x, dropout_param): |