首页 > 其他分享 >pytorch中保证代码复现的随机种子设置(Reproducibility)

pytorch中保证代码复现的随机种子设置(Reproducibility)

时间:2024-07-31 16:29:53浏览次数:17  
标签:random Reproducibility torch cudnn pytorch seed 复现 设置 种子

pytorch中保证代码复现的随机种子设置(Reproducibility)

关注B站可以观看更多实战教学视频:hallo128的个人空间

1. 代码复现的必要性

代码是用来设置整个笔记本的种子,以保证每次运行时得到相同的结果,实现结果的可重现性。首先,使用numpy和random库设置种子,然后使用torch库设置CPU和GPU的种子。接着,针对CuDNN后端,需要设置两个额外的选项。最后,通过设置环境变量PYTHONHASHSEED来固定哈希种子的数值。这种设置种子的操作对于深度学习等需要随机性的场景非常重要,能够确保实验结果的一致性。

2. 核心设置

  1. 使用numpy和random库设置种子
  2. 使用torch库设置CPU和GPU的种子
  3. 针对CuDNN后端,需要设置两个额外的选项
  4. 通过设置环境变量PYTHONHASHSEED来固定哈希种子的数值

3. 复现代码种子设置

import numpy as np
import random
import torch
import os
def set_seed(seed = 42):
	# 1.使用numpy和random库设置种子
    np.random.seed(seed)
    random.seed(seed)
    # 2.使用torch库设置CPU和GPU的种子
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    # 3.针对CuDNN后端,需要设置两个额外的选项
    # 确保每次运行相同的输入时,CuDNN卷积算法的【输出结果是确定的】,增强了结果的【可重现性】
    torch.backends.cudnn.deterministic = True
    # 禁用了CuDNN的自动寻找最适合当前配置和硬件的卷积算法的功能,这样能够保证每次运行的【速度稳定】,但可能会略微【减慢训练速度】
    torch.backends.cudnn.benchmark = False

	#禁用 cudnn 中的确定性算法,以避免计算结果的确定性对性能产生影响【提高训练模型的稳定性】
	#torch.backends.cudnn.deterministic = False
	#在每个卷积操作中自动寻找最适合当前配置的高效算法,从而提高计算速度【提高计算效率】
	#torch.backends.cudnn.benchmark = True   


    # 4.通过设置环境变量PYTHONHASHSEED来固定哈希种子的数值
    os.environ['PYTHONHASHSEED'] = str(seed)
    print('> SEEDING DONE')

# 调用设置的随机种子    
set_seed(CFG.seed)    # 自己设置一个种子变量:CFG.seed=101

标签:random,Reproducibility,torch,cudnn,pytorch,seed,复现,设置,种子
From: https://blog.csdn.net/weixin_43633501/article/details/140765146

相关文章

  • phpstudy_2016-2018_rce_backdoor漏洞复现
    phpstudy_2016-2018_rce_backdoor说明内容漏洞编号phpstudy_2016-2018_rce漏洞名称RCE(RemoteCommand|CodeExecute)漏洞评级高危影响范围phpStudy2016、phpStudy2018漏洞描述攻击者可以利用该漏洞执行PHP命令,也可以称作phpStudy后门。漏洞描述攻击者可以利用该漏......
  • 从PyTorch官方的一篇教程说开去(5 - 神经网络 torch.nn)
    神经网络长啥样?有没有四只眼睛八条腿?借图镇楼- 真的是非常经典,可以给下面的解释省掉很多力气。分3个维度阐述- 1)输入数据集。假如你自己去微调一下大模型就知道,最开始的一步就是要准备(足够大的)数据集,比如百度就要求1kw条+的数据集,否则就不给你训练。PyTorch官方的数据......
  • 文件解析漏洞复现
    一、IIS6.X1.在网站目录创建文件夹名为xxx.asp/xxx.asa文件夹,里面的任意文件都会被当作asp文件执行创建1.asp访问2.ooo.asp.jpg会被当做asp文件执行创建一个ooo.asp;.jpg访问二、IIS7.X上传1.jpg文件在网址后+/.php可以成功执行写一个1.jpg文件内容如下上传到......
  • 从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分
    原文链接:从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类教程https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247610610&idx=5&sn=f973c3e430c89d6123ca8f4892086c55&chksm=fa827115cdf5f8036ef8111c6f06cf592a8c0587......
  • 计算 Pytorch 中数据标签的梯度
    我正在努力实现研究论文中的一项技术,我需要计算相对于数据标签的梯度。这是我正在遵循的方法:计算损失相对于模型参数(grad1)的梯度。计算grad1相对于数据标签的梯度。但是,我遇到一个问题,即相对于数据标签的梯度始终为“无”。似乎数据标签(y)不是计算......
  • 逻辑漏洞复现(pikachu靶场,大米cms)
    逻辑漏洞漏洞介绍1.成因逻辑漏洞是指由于程序逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,一般出现任意密码修改(没有旧密码验证)、越权访问、密码找回、交易支付金额等。2.分析对常见的漏洞进行过统计,发现其中越权操作和逻辑漏洞占比最高,很多平台中基......
  • PyTorch 数据集中某些类的训练验证拆分结果为零样本
    我正在使用PyTorch进行图像分类。我的数据集是目录格式。我已经设置了数据管道和模型。尽管如此,我在训练验证分割中遇到了一个问题,其中某些类在训练或验证数据集中的样本为零。这是我的代码和设置的相关部分:classCustomDataset(Dataset):def__init__(self,root_dir,......
  • PyTorch深度学习快速入门(中)
    PyTorch深度学习快速入门(中)一、Containers(神经网络的基本骨架)(一)Module的使用(二)Sequential的使用<搭建小实战>二、ConvolutionLayers(卷积层)(一)torch.nn.functional中conv2d的使用(二)torch.nn中Conv2d的使用三、Poolinglayers(池化层)(一)池化层的介绍(二)MaxPool2d的......
  • 【漏洞复现】某凌OA 文件Copy导致远程代码执行
         声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。一、漏洞描述蓝凌OA平台正通过加速构建产业互联网来深化其数字化发展,从而对企业的协作能力提出了更高的要求。为了支持这一转变,蓝凌......
  • pytorch中自定义onnx新算子并导出为onnx
    importtorchfromtorch.autogradimportFunctionimporttorch.onnx#Step1:DefinecustomPyTorchoperatorclassMyCustomOp(Function):@staticmethoddefforward(ctx,input):returninput+1@staticmethoddefsymbolic(g,input):......