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

Метод get_state

Метод get_state класса Generator возвращает текущее состояние генератора случайных чисел. Состояние представлено в виде байтового объекта, который можно сохранить в файл или передать в другой процесс. Метод не принимает параметров и возвращает объект типа bytes, содержащий полную информацию о внутреннем состоянии генератора.

Синтаксис

generator.get_state()

Метод не принимает параметров. Возвращает объект bytes с состоянием генератора.

Пример

Давайте получим состояние генератора после создания нескольких случайных чисел:

import torch # Создаём генератор с фиксированным зерном g = torch.Generator() g.manual_seed(42) # Генерируем несколько случайных чисел t1 = torch.rand(3, generator=g) t2 = torch.rand(2, generator=g) # Получаем текущее состояние state = g.get_state() print(type(state)) print(len(state))

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

<class 'bytes'> 2608

Состояние представлено в виде байтового объекта фиксированной длины.

Пример

Покажем, как сохранить состояние и восстановить его в другом генераторе:

import torch # Создаём генератор и устанавливаем зерно g1 = torch.Generator() g1.manual_seed(123) # Генерируем случайные числа t1 = torch.rand(3, generator=g1) # Сохраняем состояние saved_state = g1.get_state() # Создаём новый генератор и восстанавливаем состояние g2 = torch.Generator() g2.set_state(saved_state) # Генерируем числа из восстановленного состояния t2 = torch.rand(3, generator=g2) print(t1) print(t2)

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

tensor([0.2963, 0.1265, 0.9492]) tensor([0.2963, 0.1265, 0.9492])

Как видно, оба генератора дают одинаковые числа, так как состояние было полностью восстановлено.

Пример

Покажем, как использовать метод для сохранения состояния в файл:

import torch # Создаём генератор g = torch.Generator() g.manual_seed(777) # Получаем состояние state = g.get_state() # Сохраняем в файл (в реальном коде используйте open) with open('generator_state.bin', 'wb') as f: f.write(state) # Восстанавливаем состояние из файла with open('generator_state.bin', 'rb') as f: restored_state = f.read() # Создаём новый генератор и восстанавливаем состояние g_new = torch.Generator() g_new.set_state(restored_state) # Проверяем, что генераторы идентичны print(torch.rand(2, generator=g)) print(torch.rand(2, generator=g_new))

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

tensor([0.3179, 0.1033]) tensor([0.3179, 0.1033])

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

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