РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
665 of 769 menu

Функция seed

Функция seed устанавливает начальное зерно для генератора случайных чисел в PyTorch. Она инициализирует генератор случайных чисел на CPU с использованием системного времени или другого источника энтропии. В отличие от manual_seed, функция seed не принимает явное значение зерна, а генерирует его автоматически, что полезно, когда воспроизводимость не требуется, но необходимо гарантировать разные последовательности случайных чисел при каждом запуске программы. Однако, если вы хотите получать одинаковые результаты при каждом запуске, следует использовать manual_seed с фиксированным значением.

Синтаксис

torch.seed()

Функция не принимает аргументов и возвращает целое число типа int - значение зерна, которое было установлено.

Пример

Давайте установим случайное зерно с помощью функции seed и сгенерируем тензор случайных чисел:

import torch torch.seed() t = torch.rand(3) print(t)

Результат выполнения кода (числа будут отличаться при каждом запуске):

tensor([0.1234, 0.5678, 0.9012])

Пример

Покажем, что при повторном вызове seed зерно меняется, а значит и случайные числа будут разными. Для сравнения также используем manual_seed с фиксированным значением:

import torch # Первый вызов seed torch.seed() t1 = torch.rand(3) print(t1) # Второй вызов seed torch.seed() t2 = torch.rand(3) print(t2) # Фиксированное зерно для сравнения torch.manual_seed(42) t3 = torch.rand(3) print(t3) # Повтор с тем же фиксированным зерном torch.manual_seed(42) t4 = torch.rand(3) print(t4)

Результат выполнения кода:

tensor([0.1234, 0.5678, 0.9012]) tensor([0.3456, 0.7890, 0.2345]) tensor([0.8823, 0.6712, 0.1234]) tensor([0.8823, 0.6712, 0.1234])

Как видно из примера, при использовании seed последовательности разные, а при фиксированном зерне через manual_seed они совпадают.

Пример

Функция seed возвращает установленное значение зерна, которое можно сохранить для последующего восстановления состояния с помощью manual_seed:

import torch # Устанавливаем случайное зерно и сохраняем его seed_value = torch.seed() print(f"Установлено зерно: {seed_value}") # Генерируем случайные числа t1 = torch.rand(3) print(t1) # Восстанавливаем сохранённое зерно torch.manual_seed(seed_value) t2 = torch.rand(3) print(t2)

Результат выполнения кода:

"Установлено зерно: 123456789" tensor([0.1234, 0.5678, 0.9012]) tensor([0.1234, 0.5678, 0.9012])

В этом примере мы сначала установили случайное зерно с помощью seed, запомнили его значение, а затем восстановили его через manual_seed, получив ту же последовательность случайных чисел. Это может быть полезно для отладки или воспроизведения экспериментов.

Смотрите также

  • функцию manual_seed,
    которая устанавливает фиксированное значение зерна для воспроизводимости
  • функцию initial_seed,
    которая возвращает текущее значение зерна генератора на CPU
  • функцию get_rng_state,
    которая возвращает полное состояние генератора случайных чисел
  • функцию set_rng_state,
    которая восстанавливает состояние генератора из сохранённого объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить