PyTorch中torch.manual_seed()的用法实例详解

 更新时间:2022年06月11日 14:55:05   作者:想变厉害的大白菜  
在Pytorch中可以通过相关随机数来生成张量,并且可以指定生成随机数的分布函数等,下面这篇文章主要给大家介绍了关于PyTorch中torch.manual_seed()用法的相关资料,需要的朋友可以参考下

一、torch.manual_seed(seed) 介绍

torch.manual_seed(seed) 功能描述

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

为 CPU 设置 种子 用于生成随机数,以使得结果是确定的。

当你设置一个随机种子时,接下来的随机算法生成数根据当前的随机种子按照一定规律生成。
随机种子作用域是在设置时到下一次设置时。要想重复实验结果,设置同样随机种子即可。

语法

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

参数

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

返回

返回一个torch.Generator对象。

二、类似函数的功能

为CPU中设置种子,生成随机数:

torch.manual_seed(number)

为特定GPU设置种子,生成随机数:

torch.cuda.manual_seed(number)

为所有GPU设置种子,生成随机数:

# 如果使用多个GPU,应该使用torch.cuda.manual_seed_all()为所有的GPU设置种子。
torch.cuda.manual_seed_all(number)

使用原因 :

在需要生成随机数据的实验中,每次实验都需要生成数据。设置随机种子是为了确保每次生成固定的随机数,这就使得每次实验结果显示一致了,有利于实验的比较和改进。使得每次运行该 .py 文件时生成的随机数相同。

三、实例

实例 1 :不设随机种子,生成随机数

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

每次运行test.py的输出结果都不相同:

tensor([0.4351])

tensor([0.3651])

tensor([0.7465])

实例 2 :设置随机种子,使得每次运行代码生成的随机数都一样

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

每次运行 test.py 的输出结果都是一样:

tensor([0.4963])

实例 3 :不同的随机种子生成不同的值

改变随机种子的值,设为 1 :

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

每次运行 test.py,输出结果都是:

tensor([0.7576])

改变随机种子的值,设为 5 :

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

每次运行 test.py,输出结果都是:

tensor([0.8303])

可见不同的随机种子能够生成不同的随机数。

但只要随机种子一样,每次运行代码都会生成该种子下的随机数。

实例 4 :设置随机种子后,是每次运行test.py文件的输出结果都一样,而不是每次随机函数生成的结果一样
# test.py
import torch
torch.manual_seed(0)
print(torch.rand(1))
print(torch.rand(1))

输出结果:

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

可以看到两次打印 torch.rand(1) 函数生成的结果是不一样的,但如果你再运行test.py,还是会打印:

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

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

# test.py
import torch
torch.manual_seed(0)
print(torch.rand(1))
torch.manual_seed(0)
print(torch.rand(1))

输出结果:

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

参考链接

【pytorch】torch.manual_seed()用法详解

总结

到此这篇关于PyTorch中torch.manual_seed()的法的文章就介绍到这了,更多相关PyTorch中torch.manual_seed()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django动态随机生成温度前端实时动态展示源码示例

    Django动态随机生成温度前端实时动态展示源码示例

    本篇文章主要描述的是在动态随机生成温度,在前端动态实时展示,主要用到两个东西,一个是APScheduler定时任务 和websocket,最后利用echarts将数据展示出来,下面对这两个分别进行详细的解说
    2021-09-09
  • pycharm创建临时文件scatch file的方法详解

    pycharm创建临时文件scatch file的方法详解

    JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,这篇文章主要介绍了pycharm创建临时文件scatch file的方法,需要的朋友可以参考下
    2024-07-07
  • matplotlib部件之套索Lasso的使用

    matplotlib部件之套索Lasso的使用

    这篇文章主要介绍了matplotlib部件之套索Lasso的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python封装shell命令实例分析

    Python封装shell命令实例分析

    这篇文章主要介绍了Python封装shell命令,实例分析了Python将各种常用shell命令封装进一个类中以便调用的方法,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • 在pycharm中设置显示行数的方法

    在pycharm中设置显示行数的方法

    今天小编就为大家分享一篇在pycharm中设置显示行数的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Windows下实现pytorch环境搭建

    Windows下实现pytorch环境搭建

    这篇文章主要介绍了Windows下实现pytorch环境搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • NCCL深度学习之初始化及ncclUniqueId的产生源码解析

    NCCL深度学习之初始化及ncclUniqueId的产生源码解析

    这篇文章主要为大家介绍了NCCL源码解析之初始化及ncclUniqueId的产生详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • python绘图demo实现流程介绍

    python绘图demo实现流程介绍

    这篇文章主要介绍了python绘图demo实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • Python解析pcap文件示例

    Python解析pcap文件示例

    这篇文章主要为大家介绍了Python解析pcap文件示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)

    Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)

    这篇文章主要介绍了Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07

最新评论