Cài Đặt Tế Bào Mạng Nơ-ron Hồi Quy (Vanilla RNN Cell) Từ Gốc
Tại mỗi bước thời gian t, tế bào nhận vector đầu vào xt ∈ RB × Din và vector trạng thái ẩn trước đó ht-1 ∈ R^{B × Dhidden…
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: linear-layer-and-mlp-foundations.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu nguyên lý hoạt động của tế bào RNN truyền thống (Elman RNN):
Tại mỗi bước thời gian t, tế bào nhận vector đầu vào xt ∈ RB × Din và vector trạng thái ẩn trước đó ht-1 ∈ RB × Dhidden.
- Công thức cập nhật trạng thái ẩn:
ht = tanh(xt Wih + ht-1 Whh + bh) Trong đó:
- Wih ∈ RDin × Dhidden: Ma trận trọng số đầu vào.
- Whh ∈ RDhidden × Dhidden: Ma trận trọng số hồi quy.
- bh ∈ RDhidden: Vector bias.
- tanh: Hàm kích hoạt phi tuyến tính nén giá trị vào khoảng (-1, 1).
Yêu cầu
Xây dựng lớp VanillaRNNCell:
class VanillaRNNCell:
def __init__(self, input_dim: int, hidden_dim: int):
pass
def forward_step(self, x_t: np.ndarray, h_prev: np.ndarray) -> np.ndarray:
pass
def forward_sequence(self, x_seq: np.ndarray, h_0: np.ndarray | None = None) -> tuple[np.ndarray, np.ndarray]:
passforward_step(x_t, h_prev):x_t: Shape(B, input_dim).h_prev: Shape(B, hidden_dim).- Trả về
h_tshape(B, hidden_dim). forward_sequence(x_seq, h_0):x_seq: Chuỗi đầu vào shape(B, seq_len, input_dim).h_0: Trạng thái ban đầu shape(B, hidden_dim)(nếuNone, khởi tạo toàn số 0).- Trả về tuple
(h_seq, h_last)trong đóh_seqcó shape(B, seq_len, hidden_dim)vàh_lastlàh_seq[:, -1, :].
Input
- Lớp
VanillaRNNCell(input_dim,hidden_dim): 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
VanillaRNNCell: 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
cell = VanillaRNNCell(input_dim=3, hidden_dim=5)
x = np.random.randn(1, 3, 3)
h0 = np.ones((1, 5))
h_seq, h_last = cell.forward_sequence(x, h_0=h0)Output
([[[ 0.864 , -0.3196, -0.7561, 0.0016, 0.8436],
[ 0.8023, -0.9945, 0.9823, -0.6829, -0.9165],
[-0.8296, 0.4199, -0.2282, 0.5926, -0.8446]]], [[-0.8296, 0.4199, -0.2282, 0.5926, -0.8446]])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.
