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

Метод clone

Метод clone создает новый тензор, который является полной копией исходного. При этом выделяется новая память, и новый тензор получает собственную историю вычислений (градиенты), если исходный тензор требует их вычисления. Метод не принимает параметров и возвращает новый тензор с теми же данными, типом и устройством, что и у исходного.

Синтаксис

t.clone()

Пример

Давайте создадим тензор и его копию с помощью метода clone:

import torch t = torch.tensor([1, 2, 3, 4, 5]) res = t.clone() print(res)

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

tensor([1, 2, 3, 4, 5])

Пример

Важно понимать, что изменения в копии не влияют на исходный тензор. Давайте изменим копию и проверим исходный тензор:

import torch t = torch.tensor([1, 2, 3, 4, 5]) res = t.clone() res[0] = 100 print(t) print(res)

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

tensor([1, 2, 3, 4, 5]) tensor([100, 2, 3, 4, 5])

Как видно, исходный тензор остался без изменений, а копия была изменена.

Пример

Метод clone также сохраняет информацию о градиентах. Если исходный тензор требует вычисления градиентов, то копия будет наследовать это свойство:

import torch t = torch.tensor([1., 2., 3.], requires_grad=True) res = t.clone() print(t.requires_grad) print(res.requires_grad)

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

True True

Пример

В отличие от метода detach, который создает тензор без истории градиентов, метод clone сохраняет историю вычислений. Это позволяет использовать копию в обратном распространении:

import torch t = torch.tensor([1., 2., 3.], requires_grad=True) res = t.clone() loss = (res ** 2).sum() loss.backward() print(t.grad)

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

tensor([2., 4., 6.])

Градиенты были вычислены для исходного тензора через копию.

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

  • метод detach,
    который создает тензор без истории градиентов
  • метод copy_,
    который копирует данные из другого тензора без выделения новой памяти
  • метод to,
    который изменяет тип или устройство тензора
  • метод contiguous,
    который возвращает смежный тензор в памяти
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить