Генерация текста с помощью RNN — обучение и генерация
Команда PyBooks хочет, чтобы вы обучили и протестировали модель RNN, предназначенную для предсказания следующего символа в последовательности на основе входных данных — для автодополнения названий книг. Этот проект поможет команде продвинуться в разработке моделей для завершения текста.
Экземпляр model класса RNNmodel уже загружен для вас. Переменная data прошла предобработку и закодирована в виде последовательности.
Переменные inputs и targets также загружены для вас.
Это упражнение является частью курса
Глубокое обучение для работы с текстом на PyTorch
Инструкции к упражнению
- Создайте функцию потерь, которая будет использоваться для вычисления ошибки модели.
- Создайте оптимизатор из модуля оптимизации PyTorch.
- Запустите процесс обучения модели: переведите модель в режим обучения и обнулите градиенты перед выполнением шага оптимизации.
- После завершения обучения переключите модель в режим оценки, чтобы протестировать её на примере входных данных.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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]}'")