РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
69 of 769 menu

Метод detach_

Метод detach_ класса Tensor открепляет тензор от графа вычислений, превращая его в тензор, который не отслеживает историю операций. В отличие от метода detach, который создаёт новый тензор, метод detach_ изменяет исходный тензор на месте. Это означает, что после вызова detach_ исходный тензор перестаёт быть частью графа вычислений, и для него больше нельзя вызвать backward.

Синтаксис

tensor.detach_()

Метод не принимает никаких параметров.

Пример

Давайте создадим тензор с историей вычислений и применим к нему метод detach_:

import torch t = torch.tensor([1.0, 2.0, 3.0], requires_grad=True) t = t * 2 print(t.requires_grad) t.detach_() print(t.requires_grad)

Результат выполнения кода:

True False

Пример

Попробуем вызвать метод backward после применения detach_:

import torch t = torch.tensor([1.0, 2.0, 3.0], requires_grad=True) t = t * 2 t.detach_() t.sum().backward()

Результат выполнения кода:

RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

Как видим, возникает ошибка, так как тензор больше не отслеживает историю вычислений.

Пример

Сравним работу методов detach и detach_:

import torch t1 = torch.tensor([1.0, 2.0, 3.0], requires_grad=True) t1 = t1 * 2 t2 = t1.detach() print(t1.requires_grad, t2.requires_grad) t1.detach_() print(t1.requires_grad, t2.requires_grad)

Результат выполнения кода:

True False False False

Смотрите также

  • метод detach,
    который создаёт новый тензор без истории
  • атрибут requires_grad,
    который указывает, отслеживает ли тензор операции
  • атрибут grad_fn,
    который хранит функцию, создавшую тензор
  • метод requires_grad_,
    который изменяет флаг requires_grad на месте
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить