BatchNormalization是神经网络中常用的参数初始化的方法。其算法流程图如下:
我们可以把这个流程图以门电路的形式展开,方便进行前向传播和后向传播:
那么前向传播非常简单,直接给出代码:
def batchnorm_forward(x, gamma, beta, eps):
N, D = x.shape
#为了后向传播求导方便,这里都是分步进行的
#step1: 计算均值
mu = 1./N * np.sum(x, axis = 0)
#step2: 减均值
xmu = x - mu
#step3: 计算方差
sq = xmu ** 2
var =