Функция manual_seed
Функция manual_seed устанавливает начальное значение (зерно)
для генератора псевдослучайных чисел на центральном процессоре (CPU)
в PyTorch. Она принимает одно значение - целое число, которое
инициализирует генератор. Это позволяет получать одни и те же
случайные числа при каждом запуске программы, что критически
важно для воспроизводимости результатов экспериментов.
Синтаксис
torch.manual_seed(seed)
Параметр:
seed- целое число (int), задающее начальное состояние генератора случайных чисел.
Пример
Установим зерно и сгенерируем случайный тензор из равномерного распределения:
import torch
torch.manual_seed(42)
t = torch.rand(3)
print(t)
Результат выполнения кода:
tensor([0.8823, 0.9150, 0.3829])
Если мы снова запустим этот код с тем же зерном, то получим точно такой же тензор.
Пример
Функция также влияет на генератор случайных чисел, используемый
для перемешивания данных и в других модулях, например, в randn:
import torch
torch.manual_seed(0)
t1 = torch.randn(2, 3)
print(t1)
torch.manual_seed(0)
t2 = torch.randn(2, 3)
print(t2)
Результат выполнения кода:
tensor([
[ 1.5410, -0.2934, -2.1788],
[ 0.5684, -1.0845, -1.3986],
])
tensor([
[ 1.5410, -0.2934, -2.1788],
[ 0.5684, -1.0845, -1.3986],
])
Как видно, при одинаковом зерне генерируются одинаковые тензоры.
Пример
Если необходимо также зафиксировать случайность на графическом процессоре (GPU), то следует использовать дополнительно функции для CUDA:
import torch
torch.manual_seed(123)
if torch.cuda.is_available():
torch.cuda.manual_seed_all(123)
t = torch.rand(5)
print(t)
Результат выполнения кода (пример для CPU):
tensor([0.2961, 0.5166, 0.2517, 0.6886, 0.0740])
В данном примере мы зафиксировали зерно для всех устройств, что гарантирует полную воспроизводимость эксперимента.
Смотрите также
-
функцию
rand,
которая генерирует тензор со случайными числами из равномерного распределения -
функцию
seed,
которая автоматически устанавливает случайное начальное зерно -
функцию
initial_seed,
которая возвращает текущее значение зерна -
функцию
cuda.manual_seed_all,
которая устанавливает зерно для всех графических процессоров