torch中的随机数种子

简介: 如何在torch生成随机数时,设置随机种子,要求每次调用生成的随机数都一样

------------如何在torch生成随机数时,设置随机种子,要求每次调用生成的随机数都一样


在 PyTorch 中,可以使用 torch.manual_seed(seed) 函数设置随机种子,以确保每次运行代码时生成的随机数都一样。

以下是一个示例代码,展示了如何使用 torch.manual_seed() 函数设置随机种子:


import torch
# 设置随机种子为固定值,这里设为0
torch.manual_seed(0)
# 生成一个随机的张量
x = torch.randn(3, 3)
# 打印生成的随机张量
print(x)

在此示例中,我们使用 torch.randn() 函数生成一个 3x3 的随机张量,同时使用 torch.manual_seed() 函数将随机种子设置为 0。由于随机种子已经固定,因此每次运行代码时生成的随机张量都是一样的。

需要注意的是,在设置了随机种子之后,如果代码中还有其他随机操作,比如使用 torch.rand() 函数生成随机张量,则这些随机操作的结果也会受到随机种子的影响。因此,如果需要在代码中使用多个随机操作,并且需要确保它们的结果每次都一样,就需要在每个随机操作之前都调用 torch.manual_seed() 函数设置相同的随机种子。


-----------------如何再取消随机种子?


要取消 PyTorch 中的随机种子,可以使用 torch.seed() 函数,它可以将随机种子设置为当前时间戳,从而实现取消之前设置的随机种子。

以下是一个示例代码,展示了如何使用 torch.seed() 函数取消之前设置的随机种子:


import torch
# 设置随机种子为固定值,这里设为0
torch.manual_seed(0)
# 生成一个随机的张量
x = torch.randn(3, 3)
# 打印生成的随机张量
print(x)
# 取消随机种子
torch.seed()
# 再次生成一个随机的张量
y = torch.randn(3, 3)
# 打印生成的随机张量
print(y)

在此示例中,我们先使用 torch.manual_seed() 函数将随机种子设置为 0,然后生成一个随机张量并打印它。接着使用 torch.seed() 函数取消之前设置的随机种子,并生成另一个随机张量并打印它。由于我们已经取消了随机种子,因此两次生成的随机张量应该是不同的。

需要注意的是,如果你在代码中多次设置了随机种子,而每次设置的随机种子不同,那么每次调用 torch.seed() 函数取消随机种子时,你可能会得到不同的结果。因此,如果需要取消之前设置的随机种子,应该确保在取消之前只设置了一次随机种子。


---------------上面的随机数种子设置后,结果不一样


import torch 
torch.manual_seed(0)
 x = torch.randn(3, 3) 
y = torch.randn(3, 3) 
print(x,y)

根据你提供的代码,由于使用了两次 torch.randn(3, 3) 函数生成两个不同的随机张量 xy,因此它们的值是不同的,即使使用了相同的随机种子。因此,在此代码中,随机种子的设置不会影响随机张量 xy 的结果。

如果需要使用相同的随机种子生成相同的随机张量,需要将 torch.randn() 函数的调用合并在一起,如下所示:


import torch
# 设置随机种子为固定值,这里设为0
torch.manual_seed(0)
# 生成两个随机的张量
x = torch.randn(3, 3)
y = torch.randn(3, 3)
# 打印生成的随机张量
print(x)
print(y)
# 再次使用相同的随机种子生成两个随机的张量
torch.manual_seed(0)
x = torch.randn(3, 3)
y = torch.randn(3, 3)
# 打印生成的随机张量
print(x)
print(y)

输出

tensor([[ 1.5410, -0.2934, -2.1788],
        [ 0.5684, -1.0845, -1.3986],
        [ 0.4033,  0.8380, -0.7193]])
tensor([[-0.4033, -0.5966,  0.1820],
        [-0.8567,  1.1006, -1.0712],
        [ 0.1227, -0.5663,  0.3731]])
tensor([[ 1.5410, -0.2934, -2.1788],
        [ 0.5684, -1.0845, -1.3986],
        [ 0.4033,  0.8380, -0.7193]])
tensor([[-0.4033, -0.5966,  0.1820],
        [-0.8567,  1.1006, -1.0712],
        [ 0.1227, -0.5663,  0.3731]])


在此示例中,我们先使用 torch.manual_seed() 函数将随机种子设置为 0,然后使用 torch.randn() 函数生成两个随机张量 xy,并打印它们。接着再次使用相同的随机种子生成两个随机张量,并打印它们。由于两次使用了相同的随机种子,因此两次生成的随机张量应该是一样的。


-------------或者


import torch
# 设置随机种子为固定值,这里设为0
torch.manual_seed(0)
# 生成两个随机的张量
x = torch.randn(3, 3)
# 打印生成的随机张量
print(x)
# 再次使用相同的随机种子生成两个随机的张量
torch.manual_seed(0)
y = torch.randn(3, 3)
# 打印生成的随机张量
print(y)

输出

tensor([[ 1.5410, -0.2934, -2.1788],
        [ 0.5684, -1.0845, -1.3986],
        [ 0.4033,  0.8380, -0.7193]])
tensor([[ 1.5410, -0.2934, -2.1788],
        [ 0.5684, -1.0845, -1.3986],
        [ 0.4033,  0.8380, -0.7193]])
相关文章
|
C++ Python
VS Code按住ctrl不能跳转到定义/函数(Python)
VS Code按住ctrl不能跳转到定义/函数(Python)
3798 0
VS Code按住ctrl不能跳转到定义/函数(Python)
|
XML 存储 JSON
YOLOv5的Tricks | 【Trick15】使用COCO API评估模型在自己数据集的结果
YOLOv5的Tricks | 【Trick15】使用COCO API评估模型在自己数据集的结果
2995 0
YOLOv5的Tricks | 【Trick15】使用COCO API评估模型在自己数据集的结果
pip镜像源大全及配置
在中国使用pip时,可以配置国内镜像源来提高安装速度和稳定性。以下是一些常见的国内镜像源:
17117 0
|
网络协议 安全 Linux
Tool之wget:wget的简介、安装、入门、使用方法之详细攻略(一)
Tool之wget:wget的简介、安装、入门、使用方法之详细攻略
Tool之wget:wget的简介、安装、入门、使用方法之详细攻略(一)
|
Linux 数据安全/隐私保护 Windows
更换(Pypi)pip源到国内镜像
pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.
247118 2
|
缓存 测试技术 API
解锁开源模型高性能服务:SGLang Runtime 应用场景与实践
SGLang 是一个用于大型语言模型和视觉语言模型的推理框架。
|
9月前
|
人工智能 算法 芯片
天天都在说的“算力”到底是个啥?一文全讲透!
算力是数字经济发展的重要支撑,尤其在AI和大数据应用中起着关键作用。阿里云致力于构建全球领先的算力基础设施,助力各行业数字化转型。吴泳铭和马云均强调了算力在未来科技竞争中的核心地位。2023年底,我国算力总规模达230EFLOPS,位居全球第二。算力分为通用、智能和超算算力,广泛应用于人工智能训练与推理等场景。中国正加速建设智算中心,推动算力产业链发展,并注重绿色低碳和智能运维,以应对日益增长的计算需求。
12643 19
|
11月前
|
机器学习/深度学习 人工智能 并行计算
【AI系统】Tensor Core 基本原理
本文深入介绍了英伟达GPU中的Tensor Core,一种专为加速深度学习设计的硬件单元。文章从发展历程、卷积计算、混合精度训练及基本原理等方面,详细解析了Tensor Core的工作机制及其在深度学习中的应用,旨在帮助读者全面理解Tensor Core技术。通过具体代码示例,展示了如何在CUDA编程中利用Tensor Core实现高效的矩阵运算,从而加速模型训练和推理过程。
1364 0
|
12月前
|
PyTorch TensorFlow API
大模型中 .safetensors 文件、.ckpt文件、.gguf和.pth以及.bin文件区别、加载和保存以及转换方式
本文讨论了大模型中不同文件格式如`.safetensors`、`.ckpt`、`.gguf`、`.pth`和`.bin`的区别、用途以及如何在TensorFlow、PyTorch和ONNX等框架之间进行加载、保存和转换。
3599 2
|
存储 搜索推荐 Shell
mac下终端命令提示补全
mac下终端命令提示补全
1324 0