欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > torch numpy seed使用方法

torch numpy seed使用方法

2025/5/21 6:32:53 来源:https://blog.csdn.net/Harry_CHL/article/details/145413033  浏览:    关键词:torch numpy seed使用方法

1

import numpy as np
np.random.seed(500)
np.random.rand(5)
array([0.69367953, 0.06171699, 0.6666116 , 0.55920894, 0.08511062])
import torch
torch.manual_seed(500)
torch.rand(5)

为了能够复现数据,我们可以使用seed 来控制生成的随机数。设置seed数据来设定指定的随机数列,每次调用 随机数生成函数 ,就会从随机数列种读取数据,所以重复运行相同的随机数生成函数,得到的值并不相同。

2

torch.Generator().manual_seed(seed) 与直接调用 torch.manual_seed(seed) 的主要区别在于作用域粒度上的不同。

torch.manual_seed(seed):

  • 全局设置:调用 torch.manual_seed(seed) 会影响 PyTorch 中所有后续的随机数生成操作,且影响的是全局的随机数生成器。这意味着,无论是CPU还是GPU上的随机操作,都会使用这个种子生成随机数。
  • 适用于所有随机数生成器:它会影响 PyTorch 中所有使用默认生成器的操作。例如,创建张量时使用 torch.randn() 或其他类似的随机生成函数时,它们都会受到这个种子的影响。

torch.Generator().manual_seed(seed):

  • 局部设置:调用 torch.Generator().manual_seed(seed) 会创建一个新的 torch.Generator 对象,并将种子应用到该对象。这个生成器仅对通过该生成器产生的随机数起作用,而不会影响全局默认的随机数生成器。
  • 可用于多个生成器:通过显式创建和设置 Generator 对象,你可以为不同的操作或任务创建多个独立的随机数生成器,每个生成器可以拥有不同的种子。这在需要对不同的计算操作保持独立的随机数生成时非常有用。

区别总结:

  • 全局 vs 局部

    • torch.manual_seed(seed):影响全局的默认随机数生成器。
    • torch.Generator().manual_seed(seed):创建并影响一个独立的随机数生成器,不会影响全局状态。
  • 多重生成器支持

    • 如果你希望在不同的操作中使用不同的随机数生成器并控制它们的种子,可以使用 torch.Generator().manual_seed(seed)

示例:

# 全局种子设置
torch.manual_seed(42)  # 所有后续操作都会基于种子42生成# 使用独立的生成器
gen = torch.Generator()
gen.manual_seed(42)  # 这个生成器的随机数会基于种子42,但不会影响全局设置
random_tensor = torch.randn(3, 3, generator=gen)

在这个示例中,gen 是一个独立的随机数生成器,它的行为与全局设置无关,适用于需要多个不同随机生成器的场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词