【发布时间】:2018-06-27 11:24:22
【问题描述】:
我在使用 numpy.random.seed(0) 获得可重现的结果时发现了一些奇怪的东西。
import numpy as np
def a():
print('a', np.random.rand())
b()
def b():
print('b', np.random.rand())
c()
def c():
print('c', np.random.rand())
np.random.seed(0)
a()
结果是:
a 0.5488135039273248
b 0.7151893663724195
c 0.6027633760716439
如果我将代码更改为:
import numpy as np
def a():
np.random.seed(0)
print('a', np.random.rand())
b()
print('aa', np.random.rand())
def b():
np.random.seed(0)
print('b', np.random.rand())
c()
def c():
np.random.seed(0)
print('c', np.random.rand())
a()
结果如下:
a 0.5488135039273248
b 0.5488135039273248
c 0.5488135039273248
aa 0.7151893663724195
真的很奇怪,我用 tensorflow 训练我的金融序列预测模型,我想得到可重现的结果。看来我每次使用随机函数之前都需要调用 np.random.seeds() 。谁有更好的解决方案?
【问题讨论】:
-
你觉得这里有什么奇怪的地方?
-
你期待什么?
-
为什么会很奇怪?这正是伪随机生成器的工作原理。
标签: python numpy random tensorflow