開始使用免費開始

初始化與啟動函式

不穩定梯度(消失或爆炸)是訓練深層神經網路時常見的挑戰。在這個練習與接下來的練習中,你會擴充先前為飲用水可飲性分類任務所建立的模型架構,讓它更能避免這些問題。

首先,你會改進權重初始化,改用 He(Kaiming)初始化策略。為此,你需要從已為你匯入並命名為 inittorch.nn.init 模組中,呼叫適當的初始化器。接著,你會把啟動函式從預設的 ReLU 更新為經常更佳的 ELU。

本練習屬於課程

Intermediate Deep Learning with PyTorch

檢視課程

練習說明

  • 針對第二層 fc2 的權重屬性呼叫 He(Kaiming)初始化器,作法與 fc1 相同。
  • 針對第三層 fc3 的權重屬性呼叫 He(Kaiming)初始化器,並考量最終層所使用的不同啟動函式。
  • forward() 方法中,將啟動函式從 relu 更新為 elu

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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
編輯並執行程式碼