Метод zero_
Метод zero_ класса Tensor заменяет все элементы тензора на нули. Операция выполняется непосредственно на месте (in-place), то есть изменяет исходный тензор, не создавая новый. Это полезно для сброса значений весов или градиентов в процессе обучения моделей. Метод не принимает аргументов и возвращает сам тензор после изменений.
Синтаксис
tensor.zero_()
Пример
Давайте создадим тензор с произвольными значениями и обнулим его с помощью zero_:
import torch
t = torch.tensor([1, 2, 3, 4, 5])
print("До обнуления:", t)
t.zero_()
print("После обнуления:", t)
Результат выполнения кода:
До обнуления: tensor([1, 2, 3, 4, 5])
После обнуления: tensor([0, 0, 0, 0, 0])
Пример
Рассмотрим обнуление двумерного тензора:
import torch
t = torch.tensor([
[1, 2, 3],
[4, 5, 6],
])
print("Исходный тензор:")
print(t)
t.zero_()
print("Обнулённый тензор:")
print(t)
Результат выполнения кода:
Исходный тензор:
tensor([
[1, 2, 3],
[4, 5, 6],
])
Обнулённый тензор:
tensor([
[0, 0, 0],
[0, 0, 0],
])
Пример
Метод zero_ часто используется для обнуления градиентов перед обратным распространением ошибки:
import torch
t = torch.tensor([2.0, 3.0], requires_grad=True)
loss = (t ** 2).sum()
loss.backward()
print("Градиенты до обнуления:", t.grad)
t.grad.zero_()
print("Градиенты после обнуления:", t.grad)
Результат выполнения кода:
Градиенты до обнуления: tensor([4., 6.])
Градиенты после обнуления: tensor([0., 0.])