Metin için bir GRU modeli oluşturma
PyBooks'ta ekip, daha önce eğittiğin iki modelin performansından oldukça etkilendi. Ancak mükemmeli hedefledikleri için eldeki görev için kesinlikle en iyi modeli seçmek istiyorlar. Bu nedenle, özellikle metin sınıflandırmada verimliliği ve etkinliğiyle bilinen GRU modellerinin yeteneklerini deneyerek projeyi genişletmeni istediler. Yeni görevin, Newsgroup veri kümesindeki makaleleri şu kategorilere ayırmak için GRU modelini uygulamak:
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 GRU sınıfını tamamla.
- Modeli aynı parametrelerle başlat.
- Modeli eğit: parametreleri criterion fonksiyonuna geçir ve kaybı geriye yay.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Complete the GRU model
class GRUModel(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, num_classes):
super(GRUModel, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.gru = ____
self.fc = nn.Linear(hidden_size, num_classes)
def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
out, _ = self.gru(x, h0)
out = out[:, -1, :]
out = self.fc(out)
return out
# Initialize the model
gru_model = ____
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(gru_model.parameters(), lr=0.01)
# Train the model and backpropagate the loss after initialization
for epoch in range(15):
optimizer.zero_grad()
outputs = ____
loss = criterion(____, y_train_seq)
____
optimizer.step()
print(f'Epoch: {epoch+1}, Loss: {loss.item()}')