使用张量设置特定的种子?

时间:2018-10-05 10:13:49

标签: python tensorflow

我想用一些随机值构建图形。然后,我想用不同的种子评估图。这是我要实现的示例:

import tensorflow as tf
seed = tf.placeholder(dtype=tf.int32, shape=(), name="seed")
randoms = tf.random_normal(shape=[8], seed=seed)

然后我希望做这样的事情,其中​​前两个调用将返回相同的结果:

sess = tf.InteractiveSession()
sess.run(randoms, {seed: 1})
sess.run(randoms, {seed: 1})
sess.run(randoms, {seed: 2})

有什么办法可以解决此问题?

1 个答案:

答案 0 :(得分:3)

这可以通过https://www.tensorflow.org/api_docs/python/tf/random/stateless_normal

完成

示例:

import tensorflow as tf

seed = tf.placeholder(dtype=tf.int32, shape=[2], name="seed")
randoms = tf.random.stateless_normal(shape=[3], seed=seed)

sess = tf.InteractiveSession()
print(sess.run(randoms, {seed: [1, 0]}))
print(sess.run(randoms, {seed: [1, 0]}))
print(sess.run(randoms, {seed: [2, 0]}))
[ 0.1266503  -0.49301657  0.6311907 ]
[ 0.1266503  -0.49301657  0.6311907 ]
[-0.6394294  -0.18700573 -0.82845527]

但是,文档中的警告提示:

  

在同一硬件上(以及CPU和GPU之间)的多次运行中,输出是一致的,但是在TensorFlow的版本之间或在非CPU / GPU硬件上可能会有所变化。