如何在 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

代码验证测试如下:

相关推荐
老歌老听老掉牙40 分钟前
斜抛运动问题分析:给定最大高度与墙面位置的轨迹与时间求解
python·斜抛运动
言乐61 小时前
Python自动去除水印
开发语言·python·django·virtualenv·pygame
czq_26867194871 小时前
Python打卡第31天
开发语言·python
invicinble1 小时前
python 编程语言 认识维度
开发语言·数据库·python
AC赳赳老秦1 小时前
数据采集全链路审计留痕:用 OpenClaw 实现合规审计与追溯
开发语言·汇编·python·php·swift·deepseek·openclaw
张铁霖1 小时前
深度解析:AI三次浪潮与机器学习三种范式,
python
学也学不废1 小时前
论文阅读:Advancing Semantic Textual Similarity Modeling
python
风早爽太2 小时前
Python 开发笔记:配置生产环境中 Celery Worker 的独立进程启动方式
python·fastapi
打工仔折腾 AI2 小时前
飞牛OS上用Docker Compose部署ExerciseDiary运动记录并配置远程访问
运维·人工智能·后端·python·docker·容器·ai agent 实战
小蒜学长2 小时前
基于Python的动物救助站管理系统的设计与实现(代码+数据库+LW)
数据库·后端·python·django·动物救助