Функция set_rng_state
Функция set_rng_state используется для восстановления состояния генератора случайных чисел CPU. Она принимает один обязательный параметр - объект состояния, полученный с помощью функции get_rng_state. Это позволяет воспроизводить последовательности случайных чисел в разных сессиях работы программы.
Синтаксис
torch.set_rng_state(new_state)
Параметр new_state - это объект типа torch.ByteTensor, содержащий полное состояние генератора. Функция ничего не возвращает.
Пример
Базовый пример сохранения и восстановления состояния генератора для получения повторяющихся результатов:
import torch
torch.manual_seed(0)
t = torch.rand(3)
print(t)
Результат выполнения кода:
tensor([0.4963, 0.7682, 0.0885])
Сохраним состояние после первого вызова rand и восстановим его:
import torch
torch.manual_seed(0)
t1 = torch.rand(3)
state = torch.get_rng_state()
t2 = torch.rand(3)
torch.set_rng_state(state)
t3 = torch.rand(3)
print(t1)
print(t2)
print(t3)
Результат выполнения кода:
tensor([0.4963, 0.7682, 0.0885])
tensor([0.1326, 0.5486, 0.3951])
tensor([0.1326, 0.5486, 0.3951])
Как видим, после восстановления состояния следующее случайное число совпадает с тем, которое было сгенерировано сразу после сохранения состояния.
Пример
Использование set_rng_state для воспроизведения результатов в разных частях программы:
import torch
torch.manual_seed(42)
state = torch.get_rng_state()
t1 = torch.randn(2, 3)
# Другой код, который изменяет состояние
torch.randn(5)
# Восстанавливаем состояние и получаем тот же тензор
torch.set_rng_state(state)
t2 = torch.randn(2, 3)
print(torch.allclose(t1, t2))
Результат выполнения кода:
True
Смотрите также
-
функцию
get_rng_state,
которая возвращает текущее состояние генератора CPU -
функцию
manual_seed,
которая устанавливает начальное зерно для генератора CPU -
функцию
seed,
которая автоматически устанавливает случайное зерно для генератора -
функцию
initial_seed,
которая возвращает начальное зерно генератора CPU