Mạng LSTM
Như bạn đã biết, các cell RNN thuần không được dùng nhiều trong thực tế. Một lựa chọn phổ biến hơn, xử lý chuỗi dài tốt hơn nhiều là Long Short-Term Memory (LSTM). Trong bài này, bạn sẽ tự xây dựng một mạng LSTM!
Điểm khác biệt quan trọng nhất so với mạng RNN bạn đã xây trước đó là LSTM có hai trạng thái ẩn thay vì một. Nghĩa là bạn cần khởi tạo thêm trạng thái ẩn bổ sung này và truyền nó vào cell LSTM.
torch và torch.nn đã được nhập sẵn cho bạn, bắt đầu viết mã thôi!
Bài tập này là một phần của khóa học
Deep Learning nâng cao với PyTorch
Hướng dẫn bài tập
- Trong phương thức
.__init__(), định nghĩa một tầng LSTM và gán choself.lstm. - Trong phương thức
forward(), khởi tạo trạng thái ẩn bộ nhớ dài hạn đầu tiênc0bằng các số 0. - Trong phương thức
forward(), truyền cả ba đầu vào cho tầngLSTM: đầu vào tại bước thời gian hiện tại và một tuple chứa hai trạng thái ẩn.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
class Net(nn.Module):
def __init__(self, input_size):
super().__init__()
# Define lstm layer
____ = ____(
input_size=1,
hidden_size=32,
num_layers=2,
batch_first=True,
)
self.fc = nn.Linear(32, 1)
def forward(self, x):
h0 = torch.zeros(2, x.size(0), 32)
# Initialize long-term memory
c0 = ____
# Pass all inputs to lstm layer
out, _ = ____
out = self.fc(out[:, -1, :])
return out