ai-416Đọc toàn bộ đề miễn phí

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.

AICơ bản10 phút

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ủ đề

optimizationlearning-ratescheduleentry-ramp

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.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.

Nhóm Zalo