构建用于文本的 GRU 模型
在 PyBooks,团队对您之前训练的两个模型表现印象深刻。不过,为了精益求精,他们希望为当前任务选出表现最优的模型。因此,他们请您继续扩展项目,尝试以高效率和高效果著称、常用于文本分类任务的 GRU 模型。您的新任务是使用 GRU 模型,将 Newsgroup 数据集中的文章分类到以下类别:
rec.autos、sci.med 和 comp.graphics。
以下包已为您加载:torch、nn、optim。
本练习是课程的一部分
使用 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()}')