Tensorflow函数返回与给定int不同的随机整数数组

时间:2016-10-29 00:01:34

标签: python random tensorflow

我想在tensorflow中实现一个代码,给出两个数字a,b和一个数字“true”,返回一个随机整数数组,每个人都与true不同。

使用random.randint的简单python就像

def get_a_rand(a,b,true, S):
    for i in range(S.shape[0]):
        k = True
        while (k):
            r = (randint(a,b))
            if r!= true:                
                k = False
                S[i] = r
            else:
                k = True
    return S

其中S例如:

S = np.zeros((4))

如何使用Tensorflow定义类似的东西? 使用此函数可能是tf.random_uniform([],a,b,dtype = tf.int32)??

1 个答案:

答案 0 :(得分:0)

鉴于您只想从范围中取出一个元素并且均匀采样,我建议首先从较小的范围([a,b - 1]而不是[a,b])生成,然后为大于或等于您超出范围的值添加1。

在TensorFlow中:

import tensorflow.google as tf
range_start = 0
range_end = 10 # inclusive
avoid_value = 3
value_count = 50
with tf.Session():
  # First sample from [range_start, range_end); maxval is exclusive
  one_smaller_range = tf.random_uniform(dtype=tf.int32, minval=range_start, maxval=range_end, shape=[value_count])
  # Increment for values >= the removed element
  sampled_numbers = tf.select(one_smaller_range >= avoid_value, one_smaller_range + 1, one_smaller_range)
  print(sampled_numbers.eval())