开始使用免费开始使用

构建用于文本的 GRU 模型

在 PyBooks,团队对您之前训练的两个模型表现印象深刻。不过,为了精益求精,他们希望为当前任务选出表现最优的模型。因此,他们请您继续扩展项目,尝试以高效率和高效果著称、常用于文本分类任务的 GRU 模型。您的新任务是使用 GRU 模型,将 Newsgroup 数据集中的文章分类到以下类别:

rec.autossci.medcomp.graphics

以下包已为您加载:torchnnoptim

本练习是课程的一部分

使用 PyTorch 的文本深度学习

查看课程

练习说明

  • 使用所需参数完善 GRU 类。
  • 使用相同的参数初始化模型。
  • 训练模型:将参数传入损失函数 criterion,并进行反向传播以最小化损失。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# 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()}')
编辑并运行代码