Lịch trình learning rate giảm theo bậc
Khi huấn luyện, người ta thường giảm tốc độ học theo từng chặng để mô hình hội tụ êm hơn.
Tiến độ của tôi ở bài này
Điểm và code bạn nộp đượ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: python-basics, gradient-descent.
Nội dung đề bài
Mô tả bài toán
Khi huấn luyện, người ta thường giảm tốc độ học theo từng chặng để mô hình hội tụ êm hơn. Lịch trình StepLR giữ nguyên tốc độ học trong step_size epoch đầu, sau đó nhân với hệ số gamma mỗi khi vượt qua thêm một chặng.
Yêu cầu
Viết hàm lr_at_epoch(base_lr, epoch, step_size, gamma) trả về tốc độ học tại epoch thứ epoch (đếm từ 0).
Quy ước nộp bài
Nộp hàm lr_at_epoch trong solution.py. Hệ thống gọi hàm trực tiếp và so giá trị với sai số 1e-6; không đọc stdin và không in ra stdout.
Input
- base_lr: tốc độ học ban đầu.
- epoch: chỉ số epoch, bắt đầu từ 0.
- step_size: số epoch trong một chặng, số nguyên dương.
- gamma: hệ số nhân mỗi chặng.
Output
Số thực base_lr * gamma ** (epoch // step_size), trong đó // là chia lấy nguyên.
Ràng buộc
- epoch >= 0 và step_size > 0; nếu vi phạm thì ném ValueError.
- Không cần thư viện ngoài, tính bằng Python thuần.
Ví dụ 1
Input
lr_at_epoch(base_lr=0.1, epoch=0, step_size=5, gamma=0.5)
Output
0.1
Ví dụ 2
Input
lr_at_epoch(base_lr=0.1, epoch=5, step_size=5, gamma=0.5)
Output
0.05
Giải thích
Với base_lr = 0.1, epoch = 12, step_size = 5, gamma = 0.5: số chặng là 12 // 5 = 2, nên tốc độ học là 0.1 * 0.5 ** 2 = 0.025.
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.
