def forward_pass(self, X, training=True):
# Initialize running mean and variance if first run
if self.running_mean is None:
self.running_mean = np.mean(X, axis=0)
self.running_var = np.var(X, axis=0)
if training:
mean = np.mean(X, axis=0)
var = np.var(X, axis=0)
self.X_centered = X - mean
self.stddev_inv = 1 / np.sqrt(var + self.eps)
self.running_mean = self.momentum * self.running_mean + (1 - self.momentum) * mean
self.running_var = self.momentum * self.running_var + (1 - self.momentum) * var
else:
mean = self.running_mean
var = self.running_var
X_norm = (X - mean) / np.sqrt(var + self.eps)
output = self.gamma * X_norm + self.beta
return output
评论列表
文章目录