首页 Paddle框架 帖子详情
请问怎么设置全局的随机种子(random seed)保证模型100%可复现?
收藏
快速回复
Paddle框架 问答深度学习炼丹技巧 5513 5
请问怎么设置全局的随机种子(random seed)保证模型100%可复现?
收藏
快速回复
Paddle框架 问答深度学习炼丹技巧 5513 5

如题,这个应该不太涉及开发环境和硬件配置

0
收藏
回复
全部评论(5)
时间顺序
AIStudio784460
#2 回复于2019-12

设置 program的 random seed https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/fluid_cn/Program_cn.html#random_seed
可能你还需要设置 numpy 的 numpy.random.seed();
python 自带的random.seed();
cudnn使用确定性算法 https://www.paddlepaddle.org.cn/documentation/docs/zh/flags/cudnn_cn.html#flags-cudnn-deterministic;
剩下的可能需要根据具体模型来分析,比如模型中本身带随机性的操作,例如dropout,reader shuffle, 梯度回传累加时候是否是原子加操作等等。

0
回复
AIStudio791380
#3 回复于2019-12

好的,非常感谢,请问环境变量FLAGS_cudnn_deterministic是在每次运行前通过export命令设置吗,就
export FLAGS_cudnn_deterministic=True ?

0
回复
Feiyu Chan
#4 回复于2019-12

可以把 FLAGS_cudnn_deterministic=True 和训练命令写在一行,比如说

FLAGS_cudnn_deterministic=True python train.py ...

这样就只对这个命令有效。

也可以单独写一句 export FLAGS_cudnn_deterministic=True 然后运行训练的命令,这样就对当前这个 shell 有效。

0
回复
AIStudio791380
#5 回复于2019-12

ok,非常感谢仔细解答,我没有别的问题了,可以close了

0
回复
thgpddl
#6 回复于2022-09

dropout本身也是随机的,应当遵循某些随机规则,如果设定了种子也应该是可复现的啊,否则那就是框架本身有问题啊

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户