pytorch torch.manual_seed()的用法详解

描述

设置CPU生成随机数的种子,方便下次复现实验结果。

语法

torch.manual_seed(seed) → torch._C.Generator

参数

seed (int) – CPU生成随机数的种子。取值范围为[-0x8000000000000000, 0xffffffffffffffff],十进制是[-9223372036854775808, 18446744073709551615],超出该范围将触发RuntimeError报错。

返回

返回一个torch.Generator对象。

示例

设置随机种子

# test.py
import torch
torch.manual_seed(0)
print(torch.rand(1)) # 返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数

输出:每次运行   输出结果一样

tensor([0.4963])#第1次运行结果
tensor([0.4963])#第2次运行结果
tensor([0.4963])#第2次运行结果

如果不加torch.manual_seed(0)

# test.py
import torch

print(torch.rand(1)) # 返回一个张量,包含了从区间[0, 1)的均匀分布中抽取的一组随机数

会输出一组,每次运行的输出结果都不相同:

tensor([0.0959])#第1次运行结果
tensor([0.4833])#第2次运行结果
tensor([0.4329])#第3次运行结果

注意

设置随机种子后,是每次运行脚本文件的输出结果都一样,而不是每次随机函数生成的结果一样:

请务必看懂上面的话

import torch
torch.manual_seed(0)
print(torch.rand(1))
print(torch.rand(1))

 第一次运行结果:

tensor([0.4963])
tensor([0.7682])

第二次运行结果

tensor([0.4963])
tensor([0.7682])

每次运行脚本,输出结果一样。

但是,如果你就是想要每次运行随机函数生成的结果都一样,那你可以在每个随机函数前都设置一模一样的随机种子:

import torch
torch.manual_seed(0)
print(torch.rand(1))
torch.manual_seed(0)
print(torch.rand(1))

 输出

tensor([0.4963])
tensor([0.4963])

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
`torch.manual_seed(seed)` 是 PyTorch 中的一个函数,用于设置随机数生成器的种子(seed)。在机器学习和深度学习中,随机数生成器常用于初始化模型参数的随机值、数据集的随机抽样、数据增强的随机变换等。 设置种子的作用是为了确保在相同的种子下,随机数生成器产生的随机数序列是可复现的。即在相同的种子下,每次运行代码得到的随机数序列都是一样的。这样可以保证在实验中的随机性是可控的,方便进行结果的比较和调试。 具体来说,`torch.manual_seed(seed)` 的作用有以下几个方面: 1. 初始化模型参数的随机值:神经网络模型中的权重和偏置通常会使用随机初始化。通过设置种子,可以确保每次运行时得到相同的初始化值,从而使实验结果可复现。 2. 随机抽样:在训练过程中,常会进行随机抽样来构造批次数据,如随机选择一部分样本进行梯度更新。通过设置种子,可以确保每次抽样得到相同的样本,从而保证实验结果的可比性。 3. 数据增强:在图像处理中常用的数据增强技术,如随机裁剪、随机翻转等,都会使用随机数生成器产生随机变换参数。设置种子可以确保每次运行时得到相同的随机变换,使得数据增强的结果是可复现的。 需要注意的是,`torch.manual_seed(seed)` 只能保证在单个 GPU 上的结果可复现。如果使用多个 GPU 或分布式训练,还需要设置其他相关的随机种子,如 `torch.cuda.manual_seed(seed)` 和 `torch.cuda.manual_seed_all(seed)`,以确保结果在不同设备间的一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值