BaşlayınÜcretsiz Başlayın

Metin için bir RNN modeli oluşturma

PyBooks'ta bir veri analisti olarak, müşteri etkileşimleri, zaman serileri veya metin belgeleri gibi sıralı bilgi içeren veri kümeleriyle sık sık karşılaşıyorsun. RNN'ler bu tür verileri etkili bir şekilde analiz edip içgörü çıkarabilir. Bu egzersizde, senin için önceden işlenip kodlanmış Newsgroup veri kümesine dalacaksın. Bu veri kümesi farklı kategorilerden makaleler içeriyor. Görevin, bir RNN uygulayarak bu makaleleri üç kategoriye sınıflandırmak:

rec.autos, sci.med ve comp.graphics.

Senin için şu modüller yüklendi: torch, nn, optim.

Ayrıca, input_size, hidden_size (32), num_layers (2) ve num_classes parametreleri önceden yüklendi.

Bu ve sonraki egzersizler sklearn içindeki fetch_20newsgroups veri kümesini kullanır.

Bu egzersiz

PyTorch ile Metin için Deep Learning

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • RNN sınıfını bir RNN katmanı ve tam bağlı bir linear katmanla tamamla.
  • Modeli başlat.
  • Gradyanları sıfırlayarak RNN modelini on epoch boyunca eğit.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

# Complete the RNN class
class RNNModel(nn.Module):
    def __init__(self, input_size, hidden_size, num_layers, num_classes):
        super(RNNModel, self).__init__()
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        self.rnn = ____.____(input_size, hidden_size, num_layers, batch_first=True)
        self.fc = ____.____(hidden_size, num_classes)        
    def forward(self, x):
        h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
        out, _ = self.rnn(x, h0)
        out = out[:, -1, :] 
        out = self.fc(out)
        return out

# Initialize the model
rnn_model = ____(input_size, hidden_size, num_layers, num_classes)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(rnn_model.parameters(), lr=0.01)

# Train the model for ten epochs and zero the gradients
for epoch in ____: 
    optimizer.____()
    outputs = ____(X_train_seq)
    loss = criterion(outputs, y_train_seq)
    loss.backward()
    optimizer.step()
    print(f'Epoch: {epoch+1}, Loss: {loss.item()}')
Kodu Düzenle ve Çalıştır