Metin için bir LSTM modeli oluşturma
PyBooks'ta ekip, en son teknolojik gelişmelerden yararlanarak kullanıcı deneyimini sürekli iyileştirmeyi hedefliyor. Bu vizyon doğrultusunda sana kritik bir görev verdiler. Ekip, verideki karmaşık örüntüleri yakalama becerisiyle bilinen güçlü bir araç olan LSTM'in potansiyelini keşfetmeni istiyor. Aynı Newsgroup veri kümesiyle çalışıyorsun ve hedef değişmedi: haber makalelerini üç ayrı kategoriye sınıflandırmak:
rec.autos, sci.med ve comp.graphics.
Senin için şu paketler yüklendi: torch, nn, optim.
Bu egzersiz
PyTorch ile Metin için Deep Learning
kursunun bir parçasıdırEgzersiz talimatları
- Gerekli parametrelerle LSTM ve doğrusal (linear) katmanları tamamlayarak bir LSTM modeli kur.
- Modeli gerekli parametrelerle başlat.
- Grad'leri sıfırlayıp
X_train_seqgiriş verisini modelden geçirerek LSTM modelini eğit. - Tahmin edilen
outputsve gerçek etiketlere göre kaybı (loss) hesapla.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Initialize the LSTM and the output layer with parameters
class LSTMModel(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, num_classes):
super(LSTMModel, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.lstm = nn.LSTM(____, ____, ____, batch_first=True)
self.fc = nn.Linear(____, ____)
def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
out, _ = self.lstm(x, (h0, c0))
out = out[:, -1, :]
out = self.fc(out)
return out
# Initialize model with required parameters
lstm_model = LSTMModel(____, ____, ____, ____)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(lstm_model.parameters(), lr=0.01)
# Train the model by passing the correct parameters and zeroing the gradient
for epoch in range(10):
optimizer.____
outputs = lstm_model(____)
loss = criterion(____, y_train_seq)
loss.backward()
optimizer.step()
print(f'Epoch: {epoch+1}, Loss: {loss.item()}')