gpt4 book ai didi

python - 多个 Numpy 导入的全局种子

转载 作者:太空宇宙 更新时间:2023-11-04 05:50:28 24 4
gpt4 key购买 nike

假设我有一个 Python 项目结构:

main.py which imports random_initialization.py

main.py which imports sample_around_solution.py

random_initializationsample_around_solution.py 都导入 numpy

现在,random_initialization 开始一个问题的随机实例,main 运行一个算法,sample_around_solution 使用解决方案周围的随机样本来计算一些指标(解决方案的质量, 说)。

我想要运行的可复制性,我在两个导入文件中都有 numpy.random.seed(0)。这是正确的方法吗?我觉得在某些极端情况下,这是一个可怕的想法。

最佳答案

我认为永远不要让任何东西操纵随机种子是个好主意,除了最顶层的模块,它通常是要么

  • 一个简短的main.py,它只是导入,执行一些程序选项和配置,并调用其他东西)

  • 单元测试

播种的单点允许做一些有用的事情,例如,

  • 您可以控制种子的重现性设置(如您所写)。

  • 您可以控制改变种子以获得更好的覆盖率(例如,如果您将通过单元测试运行子模块)。

  • 您可以将种子存储在持久存储中,这样如果某些执行出现问题,您可以重现它。

相反,如果子模块自己进行播种,则不能。我还认为这是错误的封装:它不是执行某些定义明确的功能 X 的模块,而是执行 X + 播种。


顺便说一句,几年前我写了一个tiny library on PyPI - UnittestRandGenState感谢为 unittest 做“智能”播种,然后考虑了一下。它基本上依赖于您所提议的内容的缺失。

关于python - 多个 Numpy 导入的全局种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com