Функция 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))

Вывод:

第一次: 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)

Вывод:

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.


Справочное руководство Pytorch torch

Другие расширения