in src/utils.py [0:0]
def get_grad_norm(model):
grads = []
for p in model.parameters():
if p.grad is not None:
if p.grad.is_sparse:
grads.append(p.grad.data.to_dense().view(-1, 1))
else:
grads.append(p.grad.data.view(-1, 1))
if len(grads) == 0:
grads.append(torch.FloatTensor([0]))
grad_norm = torch.norm(torch.cat(grads))
if grad_norm.is_cuda:
grad_norm = grad_norm.cpu()
return grad_norm.item()