我有一个用例,在给定输入整数的情况下,我需要生成一个随机整数序列。在python中有很多方法可以做到这一点。我目前正在使用的是:
import hashlib
def nextRandom(seed, length, maxval):
md5 = hashlib.md5(str(hash(seed)).encode('utf-8'))
for k in range(length):
md5.update(str(k).encode('utf-8'))
yield int(md5.hexdigest(), 16) % maxval
seed = 12345
length = 10
maxval = 1000
for randInt in nextRandom(seed, length, maxval):
print(randInt)
这可以确保在给定seed
值的情况下生成的序列是固定的。
现在,我需要在tensorflow中使用类似的功能,其中seed
作为张量,并且返回的序列也应该是张量。
我在tensorflow github页面中检查了此issue,但找不到有效的解决方案。
答案 0 :(得分:2)
这是tf.contrib.stateless
模块的一种可能的解决方案:
import tensorflow as tf
seed = tf.random_uniform(shape=[2], dtype=tf.int64, maxval=1000000)
x = tf.contrib.stateless.stateless_random_uniform(shape=(1, 1), dtype=tf.float32, seed=seed)
sess = tf.Session()
print(sess.run(x))
请注意,除非是stateless_multinomial
,否则stateless
模块不支持整数。