为 Tensorflow Random Uniform 指定最大值向量

Specify Vector of Maximum Values for Tensorflow Random Uniform

我需要生成一个示例向量,其中向量中的每个元素都是从具有不同最大值的分布中随机抽取的。最大值包含在不同的向量中。我尝试使用tensorflow的random.uniform函数,但似乎只能指定一个最大值。这是我的非矢量化代码:

f = tf.random.uniform([num_examples], minval=0, maxval=v, dtype=tf.int32)
for i in range(num_examples):
   f0 = tf.random.uniform([num_examples], minval=0, maxval=v-f[i], dtype=tf.int32)

正在尝试指定一个最大值向量(下面的代码):


f = tf.random.uniform([num_examples], minval=0, maxval=v, dtype=tf.int32)
f0 = tf.random.uniform([num_examples], minval=0, maxval=v-f, dtype=tf.int32)

returns 一个错误,因为 tensorflow 的 random.uniform 只接受一个最大值,而不是它们的向量。您对如何对其进行矢量化有什么建议吗?

在此先感谢您!

您可以生成具有 0..1 范围的分布并将结果乘以具有所需范围的向量:

> tf.random.uniform([10], minval=0, maxval=1, dtype=tf.float32) * tf.constant([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=tf.float32)

<tf.Tensor: shape=(10,), dtype=float32, numpy=
array([0.48777616, 0.22365022, 1.5342396 , 2.8297348 , 3.088411  ,
       0.36669016, 3.0236297 , 6.178155  , 4.1499534 , 7.2168493 ],
      dtype=float32)>