Tích Chập Nhân Quả Giãn Nở (Causal Dilated Conv1D) WaveNet
1. Tính nhân quả (Causality): Đầu ra tại thời điểm t chỉ được phép phụ thuộc vào các bước thời gian t, t-1, t-2, …, tuyệt đối KHÔNG được nhìn vào tương lai t+1, t+2.
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: spatial-convolution-2d-from-scratch.
Nội dung đề bài
Mục tiêu kiến thức
- Trong sinh âm thanh và chuỗi thời gian, mô hình WaveNet (DeepMind 2016) giải quyết mâu thuẫn giữa trường tiếp nhận (Receptive Field) và tính nhân quả (Causality):
- Tính nhân quả (Causality): Đầu ra tại thời điểm t chỉ được phép phụ thuộc vào các bước thời gian t, t-1, t-2, …, tuyệt đối KHÔNG được nhìn vào tương lai t+1, t+2.
- Độ giãn nở (Dilation d): Bỏ cách các bước lấy mẫu (ví dụ d = 1, 2, 4, 8, 16).
Trường tiếp nhận mở rộng theo hàm số mũ 2^L theo số tầng, cho phép bao phủ hàng vạn mẫu âm thanh mà không cần tính tuần tự chậm chạp như RNN!
- Đệm nhân quả (Causal Padding):
Với kernel K và độ giãn d, ta đệm thêm (K - 1) · d số 0 vào DUY NHẤT BÊN TRÁI của chuỗi âm thanh, và không đệm bên phải.
Yêu cầu
Xây dựng lớp CausalDilatedConv1d(torch.nn.Module):
class CausalDilatedConv1d(nn.Module):
def __init__(self, in_channels: int, out_channels: int, kernel_size: int = 2, dilation: int = 1):
pass
def forward(self, x: torch.Tensor) -> torch.Tensor:
# x shape: (B, in_channels, seq_len)
# returns shape: (B, out_channels, seq_len)
passInput
- Lớp CausalDilatedConv1d(in_channels, out_channels, kernel_size, dilation): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.
Output
- Các phương thức của CausalDilatedConv1d: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.
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
layer = CausalDilatedConv1d(in_channels=1, out_channels=1, kernel_size=2, dilation=4)
x = torch.zeros(1, 1, 10)
x[0, 0, 0] = 1.0
layer(x)
Output
Tensor shape: (1, 1, 10), 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.
