• 文档 >
  • 模块代码 >
  • torch >
  • torch.random
快捷键

torch.random 的源代码

# mypy: 允许未类型化定义
导入 contextlib
导入 警告
from collections.abc 导入 生成器

导入 火炬
from torch._C 导入 默认生成器


[文档]def set_rng_state(new_state: torch.Tensor) -> None: r"""设置随机数生成器的状态。 .. note:: 此函数仅适用于 CPU。对于 CUDA,请使用 `torch.manual_seed`,适用于 CPU 和 CUDA。 Args: new_state (torch.ByteTensor):期望的状态 """ default_generator.set_state(new_state)
[文档]def get_rng_state() -> torch.Tensor: r"""返回随机数生成器状态作为`torch.ByteTensor`。 .. note:: 返回的状态仅适用于 CPU 上的默认生成器。 参见::func:`torch.random.fork_rng`。 """ 返回 default_generator.get_state()
[文档]def manual_seed(seed) -> torch._C.Generator: 设置所有设备上生成随机数的种子。返回一个 `torch.Generator` 对象。 Args: 参数: seed (int): 所需的种子。值必须在包含的范围内 `[-0x8000_0000_0000_0000, 0xffff_ffff_ffff_ffff]` 否则,将引发 RuntimeError 是的,负数输入将按照公式 `0xffff_ffff_ffff_ffff + seed` 映射为正数。 `0xffff_ffff_ffff_ffff + seed` """ seed = int(seed) import torch.cuda if not torch.cuda._is_in_bad_fork(): torch.cuda.manual_seed_all(seed) import torch.mps if not torch.mps._is_in_bad_fork(): torch.mps.manual_seed(seed) import torch.xpu 如果没有 torch.xpu._is_in_bad_fork() torch.xpu.manual_seed_all(seed) _seed_custom_device(seed) return default_generator.manual_seed(seed)
[文档]def seed() -> int: 设置生成随机数的种子为非确定性 所有设备上的随机数。返回一个用于初始化随机数生成器的 64 位数字。 ```python # 假设输入文本为: input_text = '"""' # 翻译函数(此处仅为示例,实际翻译功能需要调用真实的翻译 API) def translate_to_simplified_chinese(text): # 这里应该调用真实的翻译 API 进行翻译 # 由于示例中不使用真实的 API,以下为模拟翻译结果 return text # 输出翻译结果 translated_text = translate_to_simplified_chinese(input_text) print(translated_text) ``` seed = default_generator.seed() import torch.cuda if not torch.cuda._is_in_bad_fork(): torch.cuda.manual_seed_all(seed) import torch.mps if not torch.mps._is_in_bad_fork(): torch.mps.manual_seed(seed) import torch.xpu 如果没有 torch.xpu._is_in_bad_fork() torch.xpu.manual_seed_all(seed) _seed_custom_device(seed) 返回 seed
定义
_seed_custom_device(种子) -> : r设置用于生成随机数的自定义设备的种子。 参数: 种子 (int): 所需的种子。 [注意:支持使用私有用途 1 的自定义设备] """ 种子 = int(种子) 自定义后端名称 = 火炬._C._get_privateuse1_backend_name() 如果 有属性(火炬, 自定义后端名称): 自定义设备模块 = getattr(火炬, 自定义后端名称) _bad_fork_name = "_is_in_bad_fork" _seed_all_name = "手动播种全部" 如果 有属性(自定义设备模块, _错误的分支名称) 有属性( 自定义设备模块, _种子全部名称 ): 如果 not getattr(自定义设备模块, _错误的分支名称)(): getattr(自定义设备模块, _种子全部名称)(种子) 否则: 消息 = f设置种子值{自定义后端名称}`设备不生效,请添加 API 的` 消息 += f``{_bad_fork_name}` and `{_seed_all_name}` to `{自定义后端名称}设备模块。" 警告.警告(消息, 用户警告, 栈级别=3)
[文档]def initial_seed() -> int: r"""返回生成随机数的初始种子 Python `long` .. 注意:: 返回的种子仅适用于 CPU 上的默认生成器。 """ return default_generator.initial_seed()
_fork_rng_warned_already =
[文档]@contextlib.contextmanager 定义 fork_rng( 设备=, 启用=True, _caller="fork_rng", 设备关键词=设备, 设备类型=cuda, ) -> 生成器: "" 分支随机数生成器,以便在返回时重置随机数生成器 将状态恢复到之前的状态。 参数: 设备(设备 ID 的可迭代对象):要分叉的设备 随机数生成器。CPU 随机数生成器状态始终被分叉。默认情况下,:meth:`fork_rng` 方法 在所有设备上操作,但如果您的机器有大量设备,则会发出警告,因为在这种情况下此函数将运行非常慢。 因为在这种情况下此函数将运行非常慢。 如果您明确指定设备,则将抑制此警告 enabled(布尔值):如果为 False,则 RNG 不会被派生。这是一个方便的 参数,用于轻松禁用上下文管理器,而无需 删除它并缩进下面的 Python 代码。 device_type (str): 设备类型字符串,默认为 `cuda`。至于自定义设备, 详细信息请见[注意:支持使用私有用途 1 的自定义设备] """ 如果 设备类型 == "meta": 产生 返回 设备类型 = 火炬.设备(设备类型).类型 device_mod = getattr(火炬, 设备类型, ) 如果 设备模块 : 抛出 RuntimeError( f"torch 没有模块"{设备类型},你应该通过 + "torch._register_device_module 注册一个模块。" ) 全局 _fork_rng_warned_already # 内部参数: # _caller: 调用 fork_rng 的函数,用户使用的 # _devices_kw: _caller 的设备关键字 如果 not 启用: 产生 返回 如果 设备 : 设备数量 = 设备模块.设备数量() 如果 设备数量 > 1 not 已警告_fork_rng 已多次触发: 消息 = ( f"{设备类型.()}您报告了{设备数量}可用设备,以及 " f"您已使用 "{_调用者}无需明确指定所使用的设备。 f"为确保安全,我们默认初始化 *所有* "{设备类型.()}设备,这可以 " f"如果有很多,可能会相当慢"{设备类型.()}s。如果你知道你只 f"在利用几个"{设备类型.()}设备的情况下,设置环境变量 f"{设备类型.()}_可见设备或'{_devices_kw}'的关键字参数'{_调用者} " "使用您实际使用的设备集。例如,如果您只使用 CPU," "设置 device.upper()_VISIBLE_DEVICES= 或 devices=[];如果您只使用设备 0," f"设置"{设备类型.()}_VISIBLE_DEVICES=0 或 devices=[0]。要初始化所有设备 f"并且要抑制此警告,请将 '"{_设备关键词}' 关键字参数设置为 "' f"`range(torch."{设备类型}.device_count())`." ) 警告.警告(消息) _fork_rng_warned_already = 真实 设备 = 列表(范围(num_devices)) 否则: # 保护用户传递给我们的生成器;我们需要遍历此 多次尝试,但生成器在第一次遍历时就会耗尽 设备 = 列表(设备) CPU_RNG 状态 = 火炬.获取随机数生成器状态() 设备随机状态 = [设备模块.获取随机数生成器状态(设备) 对于 设备 进入 设备] 尝试: 产生 最后: 火炬.设置随机数生成器状态(CPU 随机数生成器状态) 对于 设备, 设备随机数生成器状态 进入 zip(设备, 设备随机数生成器状态列表): 设备模式.设置随机数生成器状态(设备随机数生成器状态, 设备)

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源,获取您的疑问解答

查看资源