我想在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)??
答案 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())