Lịch Trình Nhiễu Tuyến Tính & Cosine Cho Mô Hình Diffusion DDPM
q(xt | xt-1) = N(xt; √(1 - βt) xt-1, βt I)
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: gaussian-process-regression-rbf-kernel.
Nội dung đề bài
Mục tiêu kiến thức
- Trong mô hình Denoising Diffusion Probabilistic Models (DDPM), quá trình khuếch tán thuận thêm nhiễu Gauss qua T bước thời gian rời rạc với phương sai βt ∈ (0, 1):
q(xt | xt-1) = N(xt; √(1 - βt) xt-1, βt I)
- Đặt αt = 1 - βt và tích lũy tích αt = ∏s=1t αs (
alphas_cumprod). - Lịch trình tuyến tính (Linear Schedule - Ho et al. 2020):
βt = linspace(βstart, βend, T)
- Lịch trình Cosine (Cosine Schedule - Nichol & Dhariwal 2021):
Lịch trình tuyến tính thêm nhiễu quá nhanh ở các bước đầu, làm mất chi tiết ảnh nhỏ. Lịch trình Cosine định nghĩa trực tiếp αt: f(t) = cos ( t/T + s1 + s · π2 )2 αt = f(t)f(0), βt = clip ( 1 - αtαt-1, ; βmax = 0.999 ) với hằng số offset s = 0.008.
Yêu cầu
Viết hàm:
def get_beta_schedule(
schedule_type: str,
num_timesteps: int,
beta_start: float = 0.0001,
beta_end: float = 0.02
) -> dict[str, torch.Tensor]:
pass- Trả về dictionary gồm 3 tensor 1D kích thước
(T,): "betas": Tensor chứa β1, …, βT."alphas": Tensor 1 - βt."alphas_cumprod": Tensor tích lũy αt = ∏s=1t αs (torch.cumprod).
Input
- Hàm
get_beta_schedule(schedule_type,num_timesteps,beta_start,beta_end): 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
get_beta_schedule: Trả về kết quả kiểudict[str, torch.Tensor]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
T = 100
sched = get_beta_schedule('linear', T, beta_start=0.001, beta_end=0.02)
diffs = sched['alphas_cumprod'][1:] - sched['alphas_cumprod'][:-1]Output
Tensor shape: (99,), dtype=torch.float32Giả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
sched = get_beta_schedule('cosine', 50)Output
{
'betas': Tensor shape: (50,), dtype=torch.float32,
'alphas': Tensor shape: (50,), dtype=torch.float32,
'alphas_cumprod': Tensor shape: (50,), dtype=torch.float32
}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.
