LSTM नेटवर्क
जैसा कि आप पहले से जानते हैं, साधारण RNN सेल्स का व्यवहार में बहुत ज़्यादा इस्तेमाल नहीं होता. लंबी sequences को बेहतर तरीके से हैंडल करने के लिए जो विकल्प अधिक प्रचलित है, वह है Long Short-Term Memory सेल्स, यानी LSTMs. इस अभ्यास में, आप खुद एक LSTM नेटवर्क बनाएँगे!
RNN नेटवर्क से सबसे महत्वपूर्ण implementation अंतर यह है कि LSTMs में एक की बजाय दो hidden states होते हैं. इसका मतलब है कि आपको इस अतिरिक्त hidden state को initialize करना होगा और LSTM सेल को पास करना होगा.
torch और torch.nn पहले से आपके लिए इम्पोर्ट किए गए हैं, तो कोड लिखना शुरू कीजिए!
यह अभ्यास पाठ्यक्रम का हिस्सा है
इंटरमीडिएट Deep Learning with PyTorch
अभ्यास निर्देश
.__init__()मेथड में एक LSTM लेयर परिभाषित करें और उसेself.lstmमें असाइन करें.forward()मेथड में पहला long-term memory hidden statec0को zeros से initialize करें.forward()मेथड मेंLSTMलेयर को तीनों इनपुट पास करें: current time step के इनपुट्स, और दोनों hidden states वाला एक ट्यूपल.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
class Net(nn.Module):
def __init__(self, input_size):
super().__init__()
# Define lstm layer
____ = ____(
input_size=1,
hidden_size=32,
num_layers=2,
batch_first=True,
)
self.fc = nn.Linear(32, 1)
def forward(self, x):
h0 = torch.zeros(2, x.size(0), 32)
# Initialize long-term memory
c0 = ____
# Pass all inputs to lstm layer
out, _ = ____
out = self.fc(out[:, -1, :])
return out