Генерация случайной последовательности в тензорном потоке с другим тензором в качестве начального числа - PullRequest
0 голосов
/ 29 января 2019

У меня есть сценарий использования, где мне нужно сгенерировать последовательность случайных целых чисел с учетом входного целого числа.Есть много способов сделать это в 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.

Теперь мне нужна аналогичная функциональность в tenorflowгде seed выступает в качестве тензора, а возвращаемая последовательность также должна быть тензором.

Я проверил эту проблему на странице gitub тензорного потока, но не смог найти работающее решение.

1 Ответ

0 голосов
/ 29 января 2019

Вот одно возможное решение с модулем 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 кейс.

...