我想在tensorflow中实现一个代码,给定两个数字a,b和一个数字"true",返回一个随机整数数组,每个人都不同于true。
在简单的python中使用random。Randint应该是
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) ??
假设您只想从范围中取出一个元素,并且均匀采样,我建议首先从一个较小的范围中生成([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())