Доступ к атрибуту .grad Тензора, который не является листовым ТензоромPython

Программы на Python
Ответить
Anonymous
 Доступ к атрибуту .grad Тензора, который не является листовым Тензором

Сообщение Anonymous »

Я пытаюсь реализовать алгоритм обучения по словарю и столкнулся со следующей ошибкой.

Предупреждение пользователя: атрибут .grad Tensor, который не осуществляется доступ к листовому тензору. Его атрибут .grad не будет заполнен во время autograd.backward(). Если вы действительно хотите, чтобы поле .grad было заполнено для нелистового тензора, используйте .retain_grad() для нелистового тензора. Если вы по ошибке получили доступ к нелистовому тензору, убедитесь, что вместо этого вы получили доступ к листовому тензору. Дополнительную информацию см. на github.com/pytorch/pytorch/pull/30531. (Внутренне срабатывает по адресу aten/src/ATen/core/TensorBody.h:417.)

Я знаю, что это предупреждение, но поскольку мне нужно градиент позже, не вычисление градиента приводит к выдаче ошибки NoneType в следующей строке моего кода:

Код: Выделить всё

P2 = -0.5 * (gradient / torch.norm(gradient, dim=0)) + P1 
Это метод расчета необходимого шага:

Код: Выделить всё

def get_spherical_step(self, start, gradient, step_size):
with torch.no_grad():
P1 = start / torch.norm(start, dim=0)
P2 = -0.5 * (gradient / torch.norm(gradient, dim=0)) + P1
P2 /= torch.norm(P2, dim=0)

projection_p1_p2 = (P1 * P2).sum(dim=0, keepdim=True) * P1
orthogonal_part = P2 - projection_p1_p2

end = P1 * math.cos(step_size) + (orthogonal_part / torch.norm(orthogonal_part, dim=0, keepdim=True)) * math.sin(step_size)

epsilon = 1e-7
zero_gradient_mask = (torch.norm(gradient, dim=0) 

Подробнее здесь: [url]https://stackoverflow.com/questions/79238710/grad-attribute-of-a-tensor-that-is-not-a-leaf-tensor-is-being-accessed[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»