pytorch模型可复现设置(cudnn.benchmark 加速卷积运算 cudnn.deterministic)(随机种子seed)(torch.backends)
在代码前加设torch.backends.cudnn.benchmark = True可以提升训练速度。会让程序在开始时花费一点额外时间,为整个网络的每个卷积层搜索最适合它的卷积实现算法,进而实现网络的加速。但是由于计算中有随机性,每次的网络结果可能会略有差异
torch.backends.cudnn.deterministic = True 固定cuda的随机数种子,每次返回的卷积算法将是确定的。可以避免benchmark=True的差异
如果是复现模型结果的话(reproducibility=True),应该用这个配置
random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed)torch.backends.cudnn.benchmark = False torch.backends.cudnn.deterministic = True
mmdetection也这么写
否则 ,(reproducibility=False):
random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed)torch.backends.cudnn.benchmark = True torch.backends.cudnn.deterministic = False
DETR是这么写的(多卡)
parser.add_argument('--seed', default=42, type=int)# fix the seed for reproducibility seed = args.seed + utils.get_rank() torch.manual_seed(seed) np.random.seed(seed) random.seed(seed)
Kaggle的例子是这么写的
def set_seed(seed):random.seed(seed)np.random.seed(seed)os.environ["PYTHONHASHSEED"] = str(seed)torch.manual_seed(seed)torch.cuda.manual_seed(seed) # type: ignoretorch.backends.cudnn.deterministic = True # type: ignoretorch.backends.cudnn.benchmark = True # type: ignoreSEED = 42 set_seed(SEED)
李宏毅的深度学习作业中是这么写的
def same_seeds(seed):torch.manual_seed(seed)if torch.cuda.is_available():torch.cuda.manual_seed(seed)torch.cuda.manual_seed_all(seed) # if you are using multi-GPU.np.random.seed(seed) # Numpy module.random.seed(seed) # Python random module.torch.backends.cudnn.benchmark = Falsetorch.backends.cudnn.deterministic = True
pytorch模型可复现设置(cudnn.benchmark 加速卷积运算 cudnn.deterministic)(随机种子seed)(torch.backends)相关推荐
- 随机种子、torch.backends.cudnn.benchmark\.deterministic
为什么使用相同的网络结构,跑出来的效果完全不同,用的学习率,迭代次数,batch size 都是一样? 固定随机数种子是非常重要的. 但是如果你使用的是PyTorch等框架,还要看一下框架的种子是否固 ...
- Pytorch分布式训练/多卡训练(二) —— Data Parallel并行(DDP)(2.2)(代码示例)(BN同步主卡保存梯度累加多卡测试inference随机种子seed)
DDP的使用非常简单,因为它不需要修改你网络的配置.其精髓只有一句话 model = DistributedDataPrallel(model, device_ids=[local_rank], ou ...
- python编程中,各种随机种子seed设置总结
python随机种子seed的作用(强化学习常用到)_汀.的博客-CSDN博客先上代码import mathimport gymfrom gym import spaces, loggerfrom g ...
- torch.backends.cudnn.benchmark 加速训练
设置 torch.backends.cudnn.benchmark=True 将会让程序在开始时花费一点额外时间,为整个网络的每个卷积层搜索最适合它的卷积实现算法,进而实现网络的加速.适用场景是网络结 ...
- cudnn.deterministic = True 固定随机种子
随机数种子seed确定时,模型的训练结果将始终保持一致. 随机数种子seed确定时使用相同的网络结构,跑出来的效果完全不同,用的学习率,迭代次数,batch size 都是一样. torch.back ...
- Pytorch(6)-设置随机种子,复现模型结果
设置随机种子,复现模型结果 1.Python本身的随机因素 2.numpy随机因素 3.pytorch随机因素 在很多情况下,我们希望能够复现实验的结果.为了消除程序中随机因素的影响,我们需要将随机数 ...
- Pytorch固定随机种子复现模型
官网 Reproducibility - PyTorch 1.11.0 documentation 在神经网络中,参数默认是进行随机初始化的.不同的初始化参数往往会导致模型的训练结果会存在一定的差异. ...
- PyTorch模型训练的几个加速技巧
这里尝试一下网上找到pyorch模型训练加速技巧,尝试一下,看看加速的效果,然后尽可能分析一下加速在哪个地方. 1.有时我们会发现,使用Pytorch的模型,训着训着,越来慢了或者outofmemor ...
- torch.backends.cudnn.benchmark ?!
大家在训练深度学习模型的时候,经常会使用 GPU 来加速网络的训练.但是说起 torch.backends.cudnn.benchmark 这个 GPU 相关的 flag,可能有人会感到比较陌生.在一 ...
- torch.backends.cudnn.benchmark
参考 torch.backends.cudnn.benchmark ?! - 云+社区 - 腾讯云 大家在训练深度学习模型的时候,经常会使用 GPU 来加速网络的训练.但是说起 torch.bac ...
最新文章
- java jsonobject_Java实现QQ登录
- java string 包含http_Java中使用HttpPost上传文件以及HttpGet进行API请求(包含HttpPost上传文件)...
- emacs .emacs_谁在乎Emacs?
- 6.确保宿主变量定义为与列数据类型匹配
- 看了某LINUX打包规范,没搞明白怎么支持多CPU,自己测试过没有?
- 【C语言】简单小游戏项目:《别踩白块儿》
- iOS应用安全Part1:搭建移动渗透测试平台
- 【游戏开发引擎】 实验3:Captain Blaster 2D 滚动射击游戏
- 7-8 哈利·波特的考试,7-9 旅游规划,7-10 公路村村通
- Qcon 演讲纪实:详解如何在实时视频通话中实现AR功能
- with ties 的用法
- 1000行代码入门python-小白入门篇,Python到底是什么?
- 教你在 Ubuntu 安装 uTorrent
- 计组作业【题目记录】
- 9*9数独游戏C++开发
- 健身管理系统源码设计和实现
- 做自媒体如何获得更多的流量?
- JAVA原生图片处理:Graphics2D海报升级(二)
- 挑战程序设计竞赛 3.6 与平面和空间打交道的计算几何
- 编程导论以python为舟_计算机科学导论--以Python为舟
热门文章
- 当一位现代应用开发者与旧式系统开发者走进一家酒吧...
- fuhome服务器连接到微信,参赛作品《微信远程温湿度环境控制器》
- IIS网站引用css等路径问题导致界面显示不正常(出现404 not found)
- LINUX下找不到该文件??
- 不得担任独立董事的情形
- 基于asp.net332公司项目管理系统
- Front-End Developer Handbook 2017 前端开发人员手册2017(6)
- 资源空间新添加《Visual C++ 游戏开发经典案例详解》PDF文档,单一PDF文件,带完整书签。
- 关于安全人体安全电流的一些数值
- and在c语言中的作用,连词and的作用