Skip to main content
 首页 » 编程设计

python之使用另一个张量作为种子在 tensorflow 中生成随机序列

2024年08月14日30zhoujg

我有一个用例,我需要在给定输入整数的情况下生成一系列随机整数。在 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 作为张量出现,返回的序列也应该是张量。

我检查了这个issue在 tensorflow github 页面中,但找不到有效的解决方案。

请您参考如下方法:

这是一个可能的解决方案 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 模块不支持整数,除非在 stateless_multinomial 中。案例。