Kỹ thuật Regularization: Inverted Dropout từ Gốc (Train vs Eval Mode)
mask ∼ Bernoulli(1 - p), y = x ⊙ mask1 - p
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 sự khác biệt giữa Standard Dropout và Inverted Dropout:
- Trong Standard Dropout: Lúc huấn luyện giữ nguyên giá trị, lúc đánh giá (eval) phải nhân output với (1 - p).
- Trong Inverted Dropout (chuẩn hiện đại của PyTorch/TensorFlow): Lúc huấn luyện chia ngay cho (1 - p):
mask ∼ Bernoulli(1 - p), y = x ⊙ mask1 - p Nhờ vậy, trong chế độ đánh giá (training=False), ta không cần làm gì thêm: y = x.
- Bảo toàn kỳ vọng toán học: E[y] = E[x ⊙ mask1 - p] = x · (1 - p)1 - p = x.
Yêu cầu
Viết hàm inverted_dropout(X: np.ndarray, p: float = 0.5, training: bool = True, seed: int | None = None) -> tuple[np.ndarray, np.ndarray | None]:
- Kiểm tra xác suất p: Nếu p < 0.0 hoặc p ≥ 1.0, ném ra ngoại lệ
ValueError. - Nếu
training=Falsehoặc p == 0.0: Trả về(X.copy(), None). - Nếu
training=True: - Tạo bộ sinh số ngẫu nhiên:
rng = np.random.default_rng(seed). - Sinh mặt nạ nhị phân
mask: Mỗi phần tử có giá trị 1 với xác suất (1 - p), giá trị 0 với xác suất p. - Tính output: y = X ⊙ mask1 - p.
- Trả về tuple:
(y, mask).
Input
- Hàm
inverted_dropout(X,p,training,seed): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
inverted_dropout: Trả về kết quả kiểutuple[np.ndarray, np.ndarray | None]theo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 2000ms.
- 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
X = np.array([[1.0, 2.0], [3.0, 4.0]])
out, mask = inverted_dropout(X, p=0.5, training=False)Output
([[1., 2.],
[3., 4.]], None)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
N = 50000
X = np.ones((N, 1)) * 10.0
out, mask = inverted_dropout(X, p=0.4, training=True, seed=42)
zero_ratio = np.mean(mask == 0.0)Output
0.40306Giả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.
