Inisialisasi dan aktivasi
Masalah gradien yang tidak stabil (menghilang atau meledak) adalah tantangan yang sering muncul saat melatih deep neural network. Dalam latihan ini dan berikutnya, Anda akan memperluas arsitektur model yang Anda bangun untuk tugas klasifikasi kelayakan air minum agar lebih kebal terhadap masalah tersebut.
Sebagai langkah pertama, Anda akan memperbaiki inisialisasi bobot dengan menggunakan strategi inisialisasi He (Kaiming). Untuk melakukannya, Anda perlu memanggil initializer yang sesuai dari modul torch.nn.init, yang telah diimpor untuk Anda sebagai init. Selanjutnya, Anda akan memperbarui fungsi aktivasi dari ReLU bawaan ke ELU yang seringkali lebih baik.
Latihan ini adalah bagian dari kursus
Deep Learning Lanjutan dengan PyTorch
Petunjuk latihan
- Panggil initializer He (Kaiming) pada atribut bobot layer kedua,
fc2, serupa dengan yang dilakukan untukfc1. - Panggil initializer He (Kaiming) pada atribut bobot layer ketiga,
fc3, dengan mempertimbangkan perbedaan fungsi aktivasi yang digunakan pada layer akhir. - Perbarui fungsi aktivasi dalam metode
forward()darirelumenjadielu.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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