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
)
对于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
)