如何在 Jupyter Notebook 中直接设置全局随机种子的方法及易错地方、notebook和pycharm中设置随机种子的区别

结论:

在 Jupyter Notebook 中直接设置全局随机种子的方法是确保每个单独的代码块中都调用相同的 set_seed 函数。这是最简单且有效的方法。在每个代码块开头设置随机种子,确保代码在每次执行时具有相同的随机数生成顺序。

易错地方:

jupyter-notebook中:

直接在代码块的其中一个运行set_seed(2024),以为就全局可用了,实际上是只在当前代码块生效 。而notebook中是由很多个代码块构成的,所以每个代码块如果存在随机生成或者划分数据的函数,都应该在开头执行一下下面这行代码:

复制代码
set_seed(2024)

pycharm中:

在这个py脚本中,执行一次上面这个函数应该是随机种子全局有效的,因为py脚本只有一个代码块,不能分块执行。

其中,set_seed()函数如下所示,可以放在文件代码块的第一个块,方便后面的每个块调用

python 复制代码
import numpy as np
import torch
import random

def set_seed(seed):
    random.seed(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    if torch.cuda.is_available():
        torch.cuda.manual_seed(seed)
        torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False

代码验证测试如下:

相关推荐
稻草人4784 分钟前
安装OCA模块
python
用户5065659277767 分钟前
回测引擎的五个工程细节:3000 根 4 小时 K 线跑出来的成本差
python
黑妹天下第一乖20 分钟前
255 次尝试就能恢复 CA 私钥?这次 TLS 信任链事故,值得每个 AI 开发者警惕
人工智能·python·https·tls·信任链·ca
happylifetree37 分钟前
Python68:核心语法-函数进阶-匿名函数(lambda表达式)
python
专注仿真41 分钟前
从「能跑通」到「能交付」:一套可直接落地的电商用户行为分析平台(Python + SQLite/MySQL + Streamlit 全栈源码与部署文档)
python·mysql·sqlite
小小张说故事43 分钟前
Python 的 for 到底怎么跑起来的?拆开迭代协议:GET_ITER 之后 FOR_ITER 在循环什么
python
凯瑟琳.奥古斯特1 小时前
动态调优IoU提升OCR文本合并精度
开发语言·python·算法
1024奇点2 小时前
【仓颉语言入门 · 第二篇 第 10 课】
开发语言·数据库·ide·mysql·开源
蒸鱼Yuzheng2 小时前
自动化长任务治理:租约、心跳、孤儿进程与安全回收
自动化测试·python·任务调度·可靠性·分布式系统
2601_962885723 小时前
从 baostock 迁移到 AlphaFeed:接口对照与代码迁移指南
python