Triển khai Lớp Batch Normalization 1D từ Gốc (Train vs Eval Mode)
1. Tính kỳ vọng mini-batch: μB = 1N ∑i=1N xi.
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: numpy-broadcasting-matrix-norm.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu hiện tượng Internal Covariate Shift và vai trò của Batch Normalization.
- Thuật toán trong chế độ Huấn luyện (
training=True): - Tính kỳ vọng mini-batch: μB = 1N ∑i=1N xi.
- Tính phương sai mini-batch: σB2 = 1N ∑i=1N (xi - μB)2.
- Chuẩn hóa: xi = xi - μB√(σB2 + ε).
- Scale và Shift: yi = γ xi + β (với γ khởi tạo bằng 1, β khởi tạo bằng 0).
- Cập nhật Running Statistics:
μrun ← (1 - m) μrun + m μB σ2run ← (1 - m) σ2run + m σB2 (Trong đó m là momentum, mặc định 0.1).
- Thuật toán trong chế độ Đánh giá (
training=False):
Sử dụng μrun và σ2run đã tích lũy: xi = xi - μrun√(σ2run + ε), yi = γ xi + β
Yêu cầu
Xây dựng lớp BatchNorm1dFromScratch:
class BatchNorm1dFromScratch:
def __init__(self, num_features: int, eps: float = 1e-5, momentum: float = 0.1):
pass
def forward(self, X: np.ndarray, training: bool = True) -> np.ndarray:
passInput
- Lớp
BatchNorm1dFromScratch(num_features,eps,momentum): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.
Output
- Các phương thức của
BatchNorm1dFromScratch: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.
Ràng buộc
- Thời gian chạy tối đa: 3000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
np.random.seed(42)
X = np.random.randn(100, 3) * 5.0 + 10.0
bn = BatchNorm1dFromScratch(num_features=3)
out_train = bn.forward(X, training=True)Output
[[ 0.4934, 0.0462, 0.5173],
[ 1.744 , -0.0523, -0.279 ],
[ 1.8125, 0.9759, -0.4915],
[ 0.5493, -0.2876, -0.4882],
[ 0.183 , -1.7759, -1.6253],
[-0.797 , -0.8516, 0.2162],
[-1.2183, -1.2616, 1.256 ],
[-0.3869, 0.2574, -1.3542],
[-0.7752, 0.3019, -1.107 ],
[ 0.346 , -0.4285, -0.331 ],
[-0.845 , 2.0894, -0.0798],
[-1.4007, 1.0324, -1.1701],
[ 0.1427, -1.8235, -1.267 ],
[ 0.1281, 0.9461, 0.0872],
[-0.2527, -0.121 , -1.4028],
[-0.989 , -0.2848, 0.8871],
[ 0.3069, -1.6217, 0.2251],
[-0.5811, -0.5068, 0.4848],
[ 1.1445, 1.144 , -0.8254],
[-0.4886, 0.5281, 0.8134],
[-0.6957, -0.0025, -1.0667],
[-1.5694, 1.0221, 1.1572],
[-0.1996, 1.2182, 0.259 ],
[-0.8979, 0.5591, 1.3214],
[-0.1555, 1.7942, -2.4334],
[ 0.8897, 0.2774, -0.3376],
[-0. , -1.8521, -0.2659],
[ 0.3233, 1.7051, -0.5356],
[-1.097 , -0.327 , 0.7591],
[ 0.2888, -0.3557, 0.3959],
[ 0.0065, 1.1824, -0.7016],
[-0.5111, -0.2144, -1.3892],
[ 0.249 , 0.4561, -0.063 ],
[-0.3977, -1.2648, -0.4474],
[-0.5294, -0.6354, -0.2132],
[ 0.3805, 2.1242, 0.0901],
[ 0.202 , 0.1117, -1.8004],
[-0.1441, 0.2499, 2.1569],
[-0.3462, 0.4976, -0.0989],
[-1.5359, 1.3612, 0.6115],
[ 0.8521, -0.7454, 1.1993],
[-1.82 , 0.7905, 1.9106],
[-1.3188, -0.3932, 0.0224],
[-0.7253, -1.4037, -0.0057],
[-1.4063, 0.6742, -0.8979],
[ 1.7768, -0.6159, -0.3584],
[ 0.8795, -1.0754, 0.1378],
[ 1.481 , -1.462 , 0.0992],
[ 0.2049, 0.9906, -1.1846],
[-1.7208, 0.7239, 0.2006],
[ 0.1934, 0.5437, -0.6817],
[ 0.1712, 0.4889, -0.7127],
[ 2.1617, 0.6745, -1.1434],
[ 0.6882, -0.8124, 0.6432],
[ 1.3 , -0.6543, 0.8024],
[ 0.3912, 1.0319, 1.6454],
[-0.4108, -0.5856, -0.8709],
[-1.1059, 0.1089, 0.2405],
[ 0.2253, 1.0372, -0.0558],
[ 1.6593, -0.0836, 2.3889],
[ 0.6506, -0.6918, -1.0347],
[ 0.4761, -0.0413, 0.5772],
[ 0.4648, 0.1133, -0.8323],
[-1.9577, -0.2703, 0.7058],
[ 0.1491, -1.0907, 0.0888],
[ 0.3577, -0.7192, 0.0713],
[-0.0409, -0.9852, 0.2555],
[ 0.5715, 1.2998, 0.8841],
[-1.7905, -0.7746, 0.3975],
[ 0.5142, 0.7168, 3.4117],
[ 0.5838, 1.3537, 0.794 ],
[ 0.6819, -0.1355, 0.6178],
[-1.0535, -0.055 , -0.5059],
[-0.0121, 2.5641, -1.7538],
[ 0.7244, -1.4674, -0.4938],
[ 1.2151, 0.2541, -1.0409],
[-0.9834, 0.8857, -0.7271],
[ 0.1519, 0.2349, -0.656 ],
[ 2.5006, 0.8388, -1.8964],
[ 0.1154, -0.4912, 0.7022],
[-1.0775, 0.0703, 0.3885],
[ 0.9431, -1.044 , -0.3696],
[-0.6906, -0.4825, 1.5268],
[ 0.3817, -1.1062, 0.7613],
[ 2.4741, 1.2479, -1.4397],
[-0.7019, 1.4886, -0.7066],
[ 0.429 , 0.9832, -0.9047],
[-0.1844, -3.139 , -0.9927],
[-0.4196, -1.0928, 1.4066],
[-1.8545, -0.2636, 0.0505],
[ 1.6444, -1.2858, 0.9829],
[-0.0993, -0.8194, 0.3497],
[ 0.1307, -0.428 , -0.0045],
[-0.5813, 0.3046, 0.5304],
[ 1.8208, -1.0825, 1.8587],
[-2.4905, 0.0323, 0.4637],
[ 0.2306, -0.4511, -0.2555],
[-0.7126, -0.4169, 0.6997],
[ 0.3232, -0.5232, 0.7448],
[ 0.2626, 1.0225, 0.501 ]]Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
bn = BatchNorm1dFromScratch(num_features=2, momentum=1.0)
X_train = np.array([[2.0, 10.0], [4.0, 20.0]])
bn.forward(X_train, training=True)
X_single = np.array([[3.0, 15.0]])
out_eval = bn.forward(X_single, training=False)
X_shifted = np.array([[10.0, 30.0], [10.0, 30.0]])
out_shifted = bn.forward(X_shifted, training=False)Output
[[7., 3.],
[7., 3.]]Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
