开始使用免费开始使用

使用 RNN 进行文本生成——训练与生成

PyBooks 的团队现在希望您训练并测试一个 RNN 模型。该模型根据给定输入预测序列中的下一个字符,用于图书名称的自动补全。这个项目将帮助团队进一步开发文本补全模型。

RNNmodel 类的 model 实例已为您预加载。data 变量已预处理并编码为序列。

inputstargets 变量也已为您预加载。

本练习是课程的一部分

使用 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]}'")
编辑并运行代码