PyTorch中如何获取手动初始化生成器的当前状态/种子?
在PyTorch中获取生成器的当前状态
首先得明确:gen.seed()方法的作用是生成一个新的随机种子并赋值给生成器,同时返回这个新种子——它不是用来获取当前状态的,这就是你每次运行结果不一致的原因。
要获取生成器的当前内部状态,你需要用gen.get_state()方法,它会返回一个包含生成器完整状态的张量。如果要在循环里跟踪状态,直接在每次操作前后调用这个方法就行。
示例代码
import torch # 初始化生成器并设置手动种子 gen = torch.Generator("cpu").manual_seed(42) for _ in range(5): # 获取并打印当前状态 current_state = gen.get_state() print(f"当前生成器状态: {current_state}") # 生成随机数,触发生成器状态更新 torch.rand(1, generator=gen)
额外说明
get_state()返回的张量包含的是生成器的完整内部状态(比如MT19937算法的内部数组),远不止单个种子值。- 如果需要保存状态以便后续恢复,可以用
torch.save(current_state, "gen_state.pt"),之后用gen.set_state(torch.load("gen_state.pt"))就能还原到之前的状态。 - 要是只是验证生成器的可复现性,其实不用打印状态——只要初始种子一致,每次运行生成的随机序列肯定是相同的。
内容的提问来源于stack exchange,提问作者enterML
相关产品推荐
相关产品推荐

