Bắt đầu ngayBắt đầu miễn phí

Khởi tạo và hàm kích hoạt

Các vấn đề về gradient không ổn định (tiêu biến hoặc bùng nổ) thường xuất hiện khi huấn luyện mạng nơ-ron sâu. Trong bài này và các bài tiếp theo, bạn sẽ mở rộng kiến trúc mô hình đã xây dựng cho bài toán phân loại nước uống được để mô hình ít bị ảnh hưởng bởi các vấn đề đó hơn.

Bước đầu tiên, bạn sẽ cải thiện việc khởi tạo trọng số bằng chiến lược khởi tạo He (Kaiming). Để làm vậy, bạn cần gọi bộ khởi tạo phù hợp từ mô-đun torch.nn.init, đã được nhập sẵn là init. Tiếp theo, bạn sẽ cập nhật các hàm kích hoạt từ ReLU mặc định sang ELU, vốn thường cho kết quả tốt hơn.

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

Xem khóa học

Hướng dẫn bài tập

  • Gọi bộ khởi tạo He (Kaiming) trên thuộc tính trọng số của tầng thứ hai, fc2, tương tự như cách đã làm cho fc1.
  • Gọi bộ khởi tạo He (Kaiming) trên thuộc tính trọng số của tầng thứ ba, fc3, đồng thời xét đến hàm kích hoạt khác được dùng ở tầng cuối.
  • Cập nhật các hàm kích hoạt trong phương thức forward() từ relu sang elu.

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):
        super().__init__()
        self.fc1 = nn.Linear(9, 16)
        self.fc2 = nn.Linear(16, 8)
        self.fc3 = nn.Linear(8, 1)
        
        # Apply He initialization
        init.kaiming_uniform_(self.fc1.weight)
        ____(____)
        ____(____, ____)

    def forward(self, x):
        # Update ReLU activation to ELU
        x = nn.functional.relu(self.fc1(x))
        x = nn.functional.relu(self.fc2(x))
        x = nn.functional.sigmoid(self.fc3(x))
        return x
Chỉnh sửa và Chạy Mã