我一直试图学习PyTorch . 这里's a tutorial I'一直关注:https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html,这基本上是一个非常简单的RNN,可以将名称分类为其语言 . 当我在CPU上运行它时,最终的结果是
100000 100% (2m 25s) 0.3983 Tsujimoto / Japanese ✓
Training completed! Time taken: 145.90 seconds.
但是当我在GPU上运行时,我得到了以下内容
100000 100% (5m 56s) 0.1462 Mcgregor / Scottish ✓
Training completed! Time taken: 356.96 seconds.
我唯一改变的是 train
函数,通过将输入张量发送到设备( device = torch.device("cuda:3" if torch.cuda.is_available() else "cpu")
),当然将rnn本身放到GPU( rnn = RNN(n_letters, n_hidden, n_categories).to(device
):
def train(category_tensor, line_tensor):
hidden = rnn.initHidden().to(device)
category_tensor, line_tensor = category_tensor.to(device), line_tensor.to(device)
rnn.zero_grad()
for i in range(line_tensor.size()[0]):
output, hidden = rnn(line_tensor[i], hidden)
loss = F.nll_loss(output, category_tensor)
loss.backward()
optimizer.step()
return output, loss.item()
难道我做错了什么?
提前致谢!