Các lớp con feed-forward
Các lớp con feed-forward ánh xạ đầu ra attention thành các biểu diễn phi tuyến tính trừu tượng để nắm bắt tốt hơn các mối quan hệ phức tạp.
Trong bài tập này, bạn sẽ tạo FeedForwardSubLayer cho transformer chỉ có encoder. Lớp này gồm hai lớp tuyến tính với một hàm kích hoạt ReLU ở giữa. Nó cũng nhận hai tham số, d_model và d_ff, lần lượt biểu thị số chiều của embedding đầu vào và số chiều trung gian giữa hai lớp tuyến tính.
d_model và d_ff đã được cung cấp sẵn để bạn sử dụng.
Bài tập này là một phần của khóa học
Các mô hình Transformer với PyTorch
Hướng dẫn bài tập
- Định nghĩa lớp tuyến tính thứ nhất và thứ hai cùng hàm kích hoạt ReLU cho lớp con feed-forward, sử dụng
d_modelvà một kích thướcd_ffở giữa các lớp. - Truyền đầu vào qua các lớp và hàm kích hoạt trong phương thức
forward(). - Khởi tạo
FeedForwardSubLayervớid_modelvàd_ffđã cho (lần lượt là512và2048) và áp dụng nó lên embedding đầu vàox.
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 FeedForwardSubLayer(nn.Module):
def __init__(self, d_model, d_ff):
super().__init__()
# Define the layers and activation
self.fc1 = ____
self.fc2 = ____
self.relu = ____
def forward(self, x):
# Pass the input through the layers and activation
return self.____(self.____(self.____(x)))
# Instantiate the FeedForwardSubLayer and apply it to x
feed_forward = ____
output = ____
print(f"Input shape: {x.shape}")
print(f"Output shape: {output.shape}")