一:批量归一化(Batch Normalization)
代码解释:
-
函数定义:
batch_norm
函数接受输入数据X
、缩放参数gamma
、平移参数beta
和一个小常数epsilon
,用于防止除零错误。X
的形状为(N, D)
,其中N
是批量大小,D
是特征维度。gamma
和beta
的形状为(1, D)
。
-
计算批量均值和方差:
mean = np.mean(X, axis=0)
计算每个特征的均值。variance = np.var(X, axis=0)
计算每个特征的方差。
-
归一化处理:
X_normalized = (X - mean) / np.sqrt(variance + epsilon)
对每个特征进行归一化处理,使其均值为0,方差为1。
-
缩放和平移:
normalized_X = gamma * X_normalized + beta
进行缩放和平移变换。
-
示例数据:
- 使用一个示例数据
X
进行测试,打印归一化后的数据。
- 使用一个示例数据
通过这些步骤,可以实现批量归一化。该实现方式只使用了NumPy库,可以方便地理解和应用于各种机器学习和深度学习项目中。
import numpy as np # 批量归一化函数 def batch_norm(X, gamma, beta, epsilon=1e-5): """ 实现批量归一化 参数: X : 输入数据,形状为(N, D),其中N是批量大小,D是特征维度 gamma : 缩放参数,形状为(1, D) beta : 平移参数,形状为(1, D) epsilon : 一个小常数,防止除零错误 返回: normalized_X : 归一化后的数据,形状与X相同 """ # 计算批量均值 mean = np.mean(X, axis=0) # 计算批量方差 variance = np.var(X, axis=0) # 对输入数据进行归一化处理 X_normalized = (X - mean) / np.sqrt(variance + epsilon) # 进行缩放和平移变换 normalized_X = gamma * X_normalized + beta return normalized_X # 示例数据 X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 缩放参数(通常初始化为1) gamma = np.ones((1, X.shape[1])) # 平移参数(通常初始化为0) beta = np.zeros((1, X.shape[1])) # 调用批量归一化函数 normalized_X = batch_norm(X, gamma, beta) print("归一化后的数据:\n", normalized_X)View Code
标签:批量,python,代码,beta,神经网络,normalized,归一化,np,gamma From: https://www.cnblogs.com/lizhiqiang0204/p/18284281