Функция PyTorch torch.manual_seed
Справочное руководство Pytorch torch
torch.manual_seedявляется функцией в PyTorch, используемой для установки seed генератора случайных чисел. Установка seed обеспечивает воспроизводимость результатов.
Это очень важно, когда результаты экспериментов должны быть воспроизводимыми, например, при отладке, воспроизведении статей и в других сценариях.
Определение функции
torch.manual_seed(seed)
Parameters:
seed(int): случайное зерно.
Возвращаемое значение:
Nothing
Примеры использования
Пример 1: Установка зерна для обеспечения воспроизводимости
Пример
import torch
# Установите случайное зерно
torch.manual_seed(42)
# Генерируемые каждый раз случайные числа одинаковы
x = torch.randn(3)
print("Первый раз:", x)
# Сбросьте то же зерно
torch.manual_seed(42)
y = torch.randn(3)
print("Второй раз:", y)
print("Результаты одинаковы:", torch.equal(x, y))
# Установите случайное зерно
torch.manual_seed(42)
# Генерируемые каждый раз случайные числа одинаковы
x = torch.randn(3)
print("Первый раз:", x)
# Сбросьте то же зерно
torch.manual_seed(42)
y = torch.randn(3)
print("Второй раз:", y)
print("Результаты одинаковы:", torch.equal(x, y))
Вывод:
第一次: tensor([ 0.3367, 0.1288, 0.2345]) 第二次: tensor([ 0.3367, 0.1288, 0.2345]) 结果相同: True
Пример 2: Полностью воспроизводимое обучение
Пример
import torch
import random
import numpy as np
def set_seed(seed=42):
# Установите зерно PyTorch
torch.manual_seed(seed)
# Установите зерно NumPy
np.random.seed(seed)
# Установить начальное значение генератора случайных чисел Python
random.seed(seed)
# Обеспечить хорошую детерминированность CUDA (если используется)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# Задать начальное значение
set_seed(42)
# Сгенерировать случайные данные
x = torch.randn(3, 4)
print(x)
import random
import numpy as np
def set_seed(seed=42):
# Установите зерно PyTorch
torch.manual_seed(seed)
# Установите зерно NumPy
np.random.seed(seed)
# Установить начальное значение генератора случайных чисел Python
random.seed(seed)
# Обеспечить хорошую детерминированность CUDA (если используется)
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
# Задать начальное значение
set_seed(42)
# Сгенерировать случайные данные
x = torch.randn(3, 4)
print(x)
Вывод:
tensor([[ 0.3367, 0.1288, 0.2345, 0.2303],
[-1.1229, -0.1863, 0.1735, -0.5524],
[ 0.6351, -0.2582, 0.4602, -0.5270]])
Чтобы полностью гарантировать воспроизводимость, необходимо одновременно задать начальные значения для PyTorch, NumPy и Python random.
Другие расширения