Bước Lấy Mẫu Khuếch Tán Ngược DDPM (Denoising Step - Ho et al. 2020)
pθ(xt-1 | xt) = N(xt-1; ; μθ(xt, t), ; β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: ddpm-forward-diffusion-process.
Nội dung đề bài
Mục tiêu kiến thức
- Quá trình khuếch tán ngược khử dần nhiễu từ xT ∼ N(0, I) về ảnh rõ nét x0.
- Xác suất hậu nghiệm từng bước (Algorithm 2 - Ho et al. 2020):
pθ(xt-1 | xt) = N(xt-1; ; μθ(xt, t), ; βt I)
- Kỳ vọng μθ(xt, t) được tính từ ước lượng nhiễu εθ(xt, t):
μθ(xt, t) = 1√(αt) ( xt - βt√(1 - αt) · εθ(xt, t) )
- Phương sai hậu nghiệm βt:
βt = 1 - αt-11 - αt · βt
- Công thức cập nhật điểm ảnh:
xt-1 = μθ(xt, t) + σt · z, với σt = √(βt) (Đặc biệt: nếu t = 0, không cộng thêm nhiễu, tức σ0 = 0).
Yêu cầu
Viết hàm:
def p_sample_step(
x_t: torch.Tensor,
t: int,
predicted_noise: torch.Tensor,
betas: torch.Tensor,
alphas: torch.Tensor,
alphas_cumprod: torch.Tensor,
z: torch.Tensor | None = None
) -> torch.Tensor:
passx_t: Tensor(B, C, H, W)hoặc(B, D).t: Số nguyên chỉ số bước thời gian t ∈ [0, T-1].predicted_noise: Tensor cùng shape vớix_tdo mô hình dự đoán.z: Tensor Gauss ngẫu nhiên N(0, I) hoặcNone.- Trả về xt-1.
Input
- Hàm
p_sample_step(xt,t,predicted_noise,betas,alphas,alphas_cumprod,z): 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
p_sample_step: Trả về kết quả kiểutorch.Tensortheo đú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_t = torch.tensor([[1.0, 2.0]])
predicted_noise = torch.tensor([[0.2, 0.4]])
betas = torch.tensor([0.1, 0.2])
alphas = 1.0 - betas
alphas_cumprod = torch.tensor([0.9, 0.72])
p_sample_step(x_t, 0, predicted_noise, betas, alphas, alphas_cumprod)Output
[[0.9874, 1.9749]]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
x_t = torch.randn(2, 4)
pred = torch.randn(2, 4)
betas = torch.tensor([0.1, 0.2, 0.3])
alphas = 1.0 - betas
alphas_cumprod = torch.cumprod(alphas, dim=0)
z = torch.zeros(2, 4)
p_sample_step(x_t, 2, pred, betas, alphas, alphas_cumprod, z=z)Output
[[ 0.0058, -1.3753, -3.1249, -1.2377],
[-0.986 , -0.4 , 2.0503, -1.3073]]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.
