Я пытаюсь вычислить производные матриц в PyTorch, используя torch.autograd.grad, однако у меня возникает несколько проблем. Вот минимальный рабочий пример для воспроизведения ошибки.
theta = torch.tensor(np.random.uniform(low=-np.pi, high=np.pi), requires_grad=True)
rot_mat = torch.tensor([[torch.cos(theta), torch.sin(theta), 0],
[-torch.sin(theta), torch.cos(theta), 0]],
dtype=torch.float, requires_grad=True)
torch.autograd.grad(outputs=rot_mat,
inputs=theta, grad_outputs=torch.ones_like(rot_mat),
create_graph=True, retain_graph=True)
Этот код приводит к ошибке. Похоже, что один из дифференцированных тензоров не использовался на графике. Установите allow_unused = True, если это желаемое поведение.
Я пробовал использовать allow_unused = True, но градиенты возвращаются как None. Я не уверен, что вызывает отключение графика здесь.