Tensorflow 中随机数列表的最有效计算方式给定最大值列表,如“np.random.randint”

Most computational efficient way for list of random numbers in Tensroflow given a list of maxiumum values like in `np.random.randint`

对于np.random.randint,您可以输入一个最大值列表,并得到一个从0到这些最大值的随机整数列表。

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

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

Tensorflow tf.random.uniform 不允许 maxval 的列表,因此您需要为每个创建一个语句,或者 运行 一个循环。我想知道是否有更优雅的方法来获取这些随机数。

在tensorflow 2.2中,你可以在uniform函数中找到maxval

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

另一种方法是先生成没有最大长度的数字,然后使用 mod 运算符

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
)