在张量流中生成随机序列,以另一个张量作为种子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在张量流中生成随机序列,以另一个张量作为种子相关的知识,希望对你有一定的参考价值。

我有一个用例,我需要在给定输入整数的情况下生成一系列随机整数。在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,但找不到有效的解决方案。

答案

以下是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情况下。

以上是关于在张量流中生成随机序列,以另一个张量作为种子的主要内容,如果未能解决你的问题,请参考以下文章

张量流随机森林回归

在张量流中,如何迭代存储在张量中的输入序列?

根据张量流中给定的序列长度数组对 3D 张量进行切片

如何在张量流中随机旋转不同角度的图像

如何使用张量流数据集 (TDFS) 作为张量流模型的输入?

LSTM 网络张量流的输入