Sie könnten nur tf.py_func
verwenden numpy.random.choice
zu wickeln und sie als TensorFlow op zur Verfügung zu stellen:
a = tf.placeholder(tf.float32)
size = tf.placeholder(tf.int32)
replace = tf.placeholder(tf.bool)
p = tf.placeholder(tf.float32)
y = tf.py_func(np.random.choice, [a, size, replace, p], tf.float32)
with tf.Session() as sess:
print(sess.run(y, {a: range(3), size: 2, replace:False, p:[0.1,0.2,0.7]}))
Sie die numpy Samen wie üblich angeben:
np.random.seed(1)
print(sess.run(y, {a: range(3), size: 2, replace:False, p:[0.1,0.2,0.7]}))
print(sess.run(y, {a: range(3), size: 2, replace:False, p:[0.1,0.2,0.7]}))
print(sess.run(y, {a: range(3), size: 2, replace:False, p:[0.1,0.2,0.7]}))
np.random.seed(1)
print(sess.run(y, {a: range(3), size: 2, replace:False, p:[0.1,0.2,0.7]}))
print(sess.run(y, {a: range(3), size: 2, replace:False, p:[0.1,0.2,0.7]}))
print(sess.run(y, {a: range(3), size: 2, replace:False, p:[0.1,0.2,0.7]}))
np.random.seed(1)
print(sess.run(y, {a: range(3), size: 2, replace:False, p:[0.1,0.2,0.7]}))
drucken würde:
[ 2. 0.]
[ 2. 1.]
[ 0. 1.]
[ 2. 0.]
[ 2. 1.]
[ 0. 1.]
[ 2. 0.]