Самый эффективный с точки зрения вычислений способ для списка случайных чисел в Tensroflow с учетом списка максимальных значений, как в `np.random.randint` - PullRequest
0 голосов
/ 27 мая 2020

Для np.random.randint вы можете ввести список максимальных значений и получить список случайных целых чисел от 0 до этих максимальных значений.

np.random.randint([1, 10, 100, 1000] )

>array([  0,   7,  31, 348])

Tensorflow tf.random.uniform не разрешает списки для maxval, поэтому вам нужно либо создать инструкцию для каждого, либо запустить al oop. Мне было интересно, есть ли более элегантный способ получить эти случайные числа.

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

В тензорном потоке 2.2 вы можете найти maxval в uniform функции

tf.random.uniform(  [4], minval=[0, 0, 0, 0], maxval=[1, 10, 100, 1000] )

> <tf.Tensor: shape=(4,), dtype=float32, numpy=array([  0.99932146,   4.725709  ,  34.502377  , 184.38554   ],
  dtype=float32)>

https://www.tensorflow.org/api_docs/python/tf/random/uniform

0 голосов
/ 27 мая 2020

Альтернативный ответ - сначала сгенерировать числа без максимальной длины, а затем использовать оператор модификации

randos = tf.random.uniform(
    shape=[a.shape[0]], minval=0, maxval=6, dtype=tf.dtypes.int32, seed=None, name=None
)


limitedRandos = tf.math.floormod(
    randos, lengths+1, name=None
)
...