Initialization और activation
Unstable (vanishing या exploding) gradients की समस्याएँ डीप न्यूरल नेटवर्क्स को ट्रेन करते समय अक्सर आती हैं. इस अभ्यास और आगे वाले में, आप water potability classification टास्क के लिए बनाए गए अपने मॉडल आर्किटेक्चर का विस्तार करेंगे ताकि वह इन समस्याओं के प्रति अधिक मज़बूत हो जाए.
पहले कदम के रूप में, आप He (Kaiming) initialization strategy से weights initialization को बेहतर करेंगे. ऐसा करने के लिए, आपको torch.nn.init मॉड्यूल से उचित initializer कॉल करना होगा, जिसे आपके लिए init नाम से import किया गया है. इसके बाद, आप activation functions को डिफ़ॉल्ट ReLU से बदलकर अक्सर बेहतर साबित होने वाले ELU पर अपडेट करेंगे.
यह अभ्यास पाठ्यक्रम का हिस्सा है
इंटरमीडिएट Deep Learning with PyTorch
अभ्यास निर्देश
- दूसरे लेयर
fc2के weight attribute पर He (Kaiming) initializer कॉल करें, ठीक वैसे ही जैसेfc1के लिए किया गया है. - तीसरे लेयर
fc3के weight attribute पर He (Kaiming) initializer कॉल करें, और अंतिम लेयर में प्रयुक्त अलग activation function का ध्यान रखें. forward()मेथड में activation functions को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