Generowanie tekstu za pomocą RNN – trening i generowanie
Zespół PyBooks chce teraz, abyś wytrenował i przetestował model RNN, który przewiduje kolejny znak w sekwencji na podstawie podanego wejścia – do autouzupełniania tytułów książek. Ten projekt pomoże zespołowi rozwijać modele do uzupełniania tekstu.
Instancja model klasy RNNmodel jest już dla ciebie załadowana. Zmienna data została wstępnie przetworzona i zakodowana jako sekwencja.
Zmienne inputs i targets są również załadowane.
To ćwiczenie jest częścią kursu
Uczenie głębokie dla tekstu z PyTorch
Instrukcje do ćwiczenia
- Utwórz instancję funkcji straty, która posłuży do obliczania błędu modelu.
- Utwórz instancję optymalizatora z modułu optymalizacji PyTorch.
- Uruchom proces treningu modelu: ustaw model w tryb treningowy i wyzeruj gradienty przed wykonaniem kroku optymalizacji.
- Po zakończeniu treningu przełącz model w tryb ewaluacji, aby przetestować go na przykładowym wejściu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Instantiate the loss function
criterion = nn.____()
# Instantiate the optimizer
optimizer = torch.optim.____(model.parameters(), lr=0.01)
# Train the model
for epoch in range(100):
model.____()
outputs = model(inputs)
loss = criterion(outputs, targets)
optimizer.____()
loss.backward()
optimizer.step()
if (epoch+1) % 10 == 0:
print(f'Epoch {epoch+1}/100, Loss: {loss.item()}')
# Test the model
model.____()
test_input = char_to_ix['r']
test_input = nn.functional.one_hot(torch.tensor(test_input).view(-1, 1), num_classes=len(chars)).float()
predicted_output = model(test_input)
predicted_char_ix = torch.argmax(predicted_output, 1).item()
print(f"Test Input: 'r', Predicted Output: '{ix_to_char[predicted_char_ix]}'")