gpt4 book ai didi

python - 这里为什么要用clip_grad_norm_函数呢?

转载 作者:行者123 更新时间:2023-12-05 03:42:28 27 4
gpt4 key购买 nike

我正在从某人的代码中使用 PyTorch 学习 LSTM。在这里,他在两层 LSTM 的训练过程中使用了 clip_grad_norm_ 函数。我想知道他为什么在这里使用 clip_grad_norm_ 函数,这样我就可以正确理解整个代码(他在倒数第二行使用了它)。

for x, y in get_batches(data, batch_size, seq_length):
counter += 1

x = one_hot_encode(x, n_chars)
inputs, targets = torch.from_numpy(x), torch.from_numpy(y)

if(train_on_gpu):
inputs, targets = inputs.cuda(), targets.cuda()

h = tuple([each.data for each in h])
net.zero_grad()

output, h = net(inputs, h)

loss = criterion(output, targets.view(batch_size*seq_length).long())
loss.backward()

nn.utils.clip_grad_norm_(net.parameters(), clip)
opt.step()

如果您需要有关问题的更多信息,请告诉我。

最佳答案

torch.nn.utils.clip_grad_norm_执行梯度裁剪。它用于缓解 exploding gradients 的问题,这对于循环网络(LSTM 是其中的一种)尤其重要。

可以在 original paper 中找到更多详细信息。 .

关于python - 这里为什么要用clip_grad_norm_函数呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67236480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com