Generazione di testo con RNN - Addestramento e Generazione
Il team di PyBooks ora vuole che tu addestri e testi il modello RNN, progettato per prevedere il carattere successivo nella sequenza in base all'input fornito, per l'auto-completamento dei titoli dei libri. Questo progetto aiuterà il team a sviluppare ulteriormente modelli per il completamento del testo.
L'istanza model della classe RNNmodel è già caricata per te. La variabile data è stata pre-processata e codificata come sequenza.
Le variabili inputs e targets sono già pre-caricate per te.
Questo esercizio fa parte del corso
Deep Learning per il testo con PyTorch
Istruzioni dell'esercizio
- Istanzia la funzione di loss che verrà usata per calcolare l'errore del nostro modello.
- Istanzia l'ottimizzatore dal modulo di ottimizzazione di PyTorch.
- Esegui il processo di addestramento impostando il modello in modalità train e azzerando i gradienti prima di effettuare uno step di ottimizzazione.
- Dopo l'addestramento, passa il modello in modalità di valutazione per testarlo su un input di esempio.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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]}'")